blob: 9514bd6fc354f83596668cb11c1b71d0a6030724 [file] [log] [blame]
/*
* Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "../../mach/exynos/mux.h"
#include <platsupport/plat/gpio.h>
static struct mux_feature_data i2c0_data[] = {
{ .port = GPD1, .pin = 0, MUXVALUE_CPD(2, PUD_PULLUP, DRV1X)},
{ .port = GPD1, .pin = 1, MUXVALUE_CPD(2, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c1_data[] = {
{ .port = GPD1, .pin = 2, MUXVALUE_CPD(2, PUD_PULLUP, DRV1X)},
{ .port = GPD1, .pin = 3, MUXVALUE_CPD(2, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c2_data[] = {
{ .port = GPA0, .pin = 6, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPA0, .pin = 7, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c3_data[] = {
{ .port = GPA1, .pin = 2, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPA1, .pin = 3, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c4_data[] = {
{ .port = GPB, .pin = 0, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPB, .pin = 1, MUXVALUE_CPD(2, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c5_data[] = {
{ .port = GPB, .pin = 2, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPB, .pin = 3, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c6_data[] = {
{ .port = GPC1, .pin = 3, MUXVALUE_CPD(4, PUD_PULLUP, DRV1X)},
{ .port = GPC1, .pin = 4, MUXVALUE_CPD(4, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data i2c7_data[] = {
{ .port = GPD0, .pin = 2, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPD0, .pin = 3, MUXVALUE_CPD(3, PUD_PULLUP, DRV1X)},
{ .port = GPIOPORT_NONE }
};
/* SPI */
static struct mux_feature_data spi0_data[] = {
{ .port = GPB, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data spi1_data[] = {
{ .port = GPB, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPB, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data spi2_data[] = {
{ .port = GPC1, .pin = 1, .value = MUXVALUE_CPD(5, PUD_PULLUP, DRV3X)},
{ .port = GPC1, .pin = 2, .value = MUXVALUE_CPD(5, PUD_PULLUP, DRV3X)},
{ .port = GPC1, .pin = 3, .value = MUXVALUE_CPD(5, PUD_PULLUP, DRV3X)},
{ .port = GPC1, .pin = 4, .value = MUXVALUE_CPD(5, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
/* UART */
static struct mux_feature_data uart0_data[] = {
{ .port = GPA0, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA0, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart0_flow_data[] = {
{ .port = GPA0, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA0, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart1_data[] = {
{ .port = GPA0, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA0, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart1_flow_data[] = {
{ .port = GPA0, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA0, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart2_data[] = {
{ .port = GPA1, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA1, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart2_flow_data[] = {
{ .port = GPA1, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA1, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart3_data[] = {
{ .port = GPA1, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA1, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data uart3_flow_data[] = {
{ .port = GPA1, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPA1, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPIOPORT_NONE }
};
/* EBI */
static struct mux_feature_data srom_data[] = {
/* SROM_CSn[3:0] */
{ .port = GPY0, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY0, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY0, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY0, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* SROM_WAITn */
{ .port = GPY1, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* Terminate the list */
{ .port = GPIOPORT_NONE }
};
static struct mux_feature_data ebi_data[] = {
/* EBI_OEn */
{ .port = GPY0, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* EBI_WEn */
{ .port = GPY0, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* EBI_BE[1:0] */
{ .port = GPY1, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY1, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* EBI_ADDR[15:0] */
{ .port = GPY3, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY3, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY4, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* EBI_DATA[15:0] */
{ .port = GPY5, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY5, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 0, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 1, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 2, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 3, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 4, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 5, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 6, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
{ .port = GPY6, .pin = 7, .value = MUXVALUE_CPD(2, PUD_PULLUP, DRV3X)},
/* Terminate the list */
{ .port = GPIOPORT_NONE }
};
struct mux_feature_data* feature_data[] = {
[MUX_I2C0] = i2c0_data,
[MUX_I2C1] = i2c1_data,
[MUX_I2C2] = i2c2_data,
[MUX_I2C3] = i2c3_data,
[MUX_I2C4] = i2c4_data,
[MUX_I2C5] = i2c5_data,
[MUX_I2C6] = i2c6_data,
[MUX_I2C7] = i2c7_data,
[MUX_SPI0] = spi0_data,
[MUX_SPI1] = spi1_data,
[MUX_SPI2] = spi2_data,
[MUX_UART0] = uart0_data,
[MUX_UART1] = uart1_data,
[MUX_UART2] = uart2_data,
[MUX_UART3] = uart3_data,
[MUX_UART0_FLOW] = uart0_flow_data,
[MUX_UART1_FLOW] = uart1_flow_data,
[MUX_UART2_FLOW] = uart2_flow_data,
[MUX_UART3_FLOW] = uart3_flow_data,
[MUX_EBI] = ebi_data,
[MUX_SROM] = srom_data,
};