ODROID C2: Enable I2C pins when the I2C module isn't loaded
Change-Id: Ic96b92e5f697f2b7b2059969332c4f4835a77aa5
This commit is contained in:
@@ -30,7 +30,7 @@ static const int pinToGpio_rev1[64] = {
|
||||
247, -1, // 2 | 3 : GPIOX.19,
|
||||
235, 233, // 4 | 5 : GPIOX.7, GPIOX.5
|
||||
234, 214, // 6 | 7 : GPIOX.6, GPIOY.3
|
||||
-1, -1, // 8 | 9 : GPIODV.24(I2CA_SDA), GPIODV.25(I2CA_SCL)
|
||||
205, 206, // 8 | 9 : GPIODV.24(I2CA_SDA), GPIODV.25(I2CA_SCL)
|
||||
248, 249, // 10 | 11 : GPIOX.20, GPIOX.21
|
||||
238, 237, // 12 | 13 : GPIOX.10, GPIOX.9
|
||||
236, -1, // 14 | 15 : GPIOX.8,
|
||||
@@ -51,8 +51,8 @@ static const int phyToGpio_rev1[64] = {
|
||||
// physical header pin number to native gpio number
|
||||
-1, // 0
|
||||
-1, -1, // 1 | 2 : 3.3V, 5.0V
|
||||
-1, -1, // 3 | 4 : GPIODV.24(I2CA_SDA), 5.0V
|
||||
-1, -1, // 5 | 6 : GPIODV.25(I2CA_SCL), GND
|
||||
205, -1, // 3 | 4 : GPIODV.24(I2CA_SDA), 5.0V
|
||||
206, -1, // 5 | 6 : GPIODV.25(I2CA_SCL), GND
|
||||
214, -1, // 7 | 8 : GPIOY.3, GPIOX.16(UART_TX_B)
|
||||
-1, -1, // 9 | 10 : GND, GPIOX.17(UART_RX_B)
|
||||
219,218, // 11 | 12 : GPIOY.8, GPIOY.7
|
||||
@@ -83,7 +83,7 @@ static const int pinToGpio_rev2[64] = {
|
||||
239, 237, // 2 | 3 : GPIOX.11, GPIOX.9
|
||||
236, 233, // 4 | 5 : GPIOX.8, GPIOX.5
|
||||
231, 249, // 6 | 7 : GPIOX.3, GPIOX.21
|
||||
-1, -1, // 8 | 9 : GPIODV.24(I2CA_SDA), GPIODV.25(I2CA_SCL)
|
||||
205, 206, // 8 | 9 : GPIODV.24(I2CA_SDA), GPIODV.25(I2CA_SCL)
|
||||
229, 225, // 10 | 11 : GPIOX.1, GPIOY.14
|
||||
235, 232, // 12 | 13 : GPIOX.7(PWM1), GPIOX.4
|
||||
230, -1, // 14 | 15 : GPIOX.2, GPIOX.12(UART_TX_B)
|
||||
@@ -104,8 +104,8 @@ static const int phyToGpio_rev2[64] = {
|
||||
// physical header pin number to native gpio number
|
||||
-1, // 0
|
||||
-1, -1, // 1 | 2 : 3.3V, 5.0V
|
||||
-1, -1, // 3 | 4 : GPIODV.24(I2CA_SDA), 5.0V
|
||||
-1, -1, // 5 | 6 : GPIODV.25(I2CA_SCL), GND
|
||||
205, -1, // 3 | 4 : GPIODV.24(I2CA_SDA), 5.0V
|
||||
206, -1, // 5 | 6 : GPIODV.25(I2CA_SCL), GND
|
||||
249, -1, // 7 | 8 : GPIOX.21, GPIOX.12(UART_TX_B)
|
||||
-1, -1, // 9 | 10 : GND, GPIOX.13(UART_RX_B)
|
||||
247,238, // 11 | 12 : GPIOX.19, GPIOX.10
|
||||
@@ -190,6 +190,8 @@ static int gpioToGPSETReg (int pin)
|
||||
return C2_GPIOX_OUTP_REG_OFFSET;
|
||||
if (pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return C2_GPIOY_OUTP_REG_OFFSET;
|
||||
if (pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return C2_GPIODV_OUTP_REG_OFFSET;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -204,6 +206,8 @@ static int gpioToGPLEVReg (int pin)
|
||||
return C2_GPIOX_INP_REG_OFFSET;
|
||||
if (pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return C2_GPIOY_INP_REG_OFFSET;
|
||||
if (pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return C2_GPIODV_INP_REG_OFFSET;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -218,6 +222,8 @@ static int gpioToPUENReg (int pin)
|
||||
return C2_GPIOX_PUEN_REG_OFFSET;
|
||||
if (pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return C2_GPIOY_PUEN_REG_OFFSET;
|
||||
if (pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return C2_GPIODV_PUEN_REG_OFFSET;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -232,6 +238,8 @@ static int gpioToPUPDReg (int pin)
|
||||
return C2_GPIOX_PUPD_REG_OFFSET;
|
||||
if (pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return C2_GPIOY_PUPD_REG_OFFSET;
|
||||
if (pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return C2_GPIODV_PUPD_REG_OFFSET;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -246,6 +254,8 @@ static int gpioToShiftReg (int pin)
|
||||
return pin - C2_GPIOX_PIN_START;
|
||||
if (pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return pin - C2_GPIOY_PIN_START;
|
||||
if (pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return pin - C2_GPIODV_PIN_START;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -260,29 +270,42 @@ static int gpioToGPFSELReg (int pin)
|
||||
return C2_GPIOX_FSEL_REG_OFFSET;
|
||||
if(pin >= C2_GPIOY_PIN_START && pin <= C2_GPIOY_PIN_END)
|
||||
return C2_GPIOY_FSEL_REG_OFFSET;
|
||||
if(pin >= C2_GPIODV_PIN_START && pin <= C2_GPIODV_PIN_END)
|
||||
return C2_GPIODV_FSEL_REG_OFFSET;
|
||||
return -1;
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static int getModeToGpio (int mode, int pin)
|
||||
{
|
||||
int retPin = -1;
|
||||
|
||||
switch (mode) {
|
||||
/* Native gpio number */
|
||||
case MODE_GPIO:
|
||||
return pin;
|
||||
retPin = pin;
|
||||
break;
|
||||
/* Native gpio number for sysfs */
|
||||
case MODE_GPIO_SYS:
|
||||
return lib->sysFds[pin] != -1 ? pin : -1;
|
||||
retPin = lib->sysFds[pin] != -1 ? pin : -1;
|
||||
break;
|
||||
/* wiringPi number */
|
||||
case MODE_PINS:
|
||||
return pin < 64 ? pinToGpio[pin] : -1;
|
||||
retPin = pin < 64 ? pinToGpio[pin] : -1;
|
||||
break;
|
||||
/* header pin number */
|
||||
case MODE_PHYS:
|
||||
return pin < 64 ? phyToGpio[pin] : -1;
|
||||
default :
|
||||
retPin = pin < 64 ? phyToGpio[pin] : -1;
|
||||
break;
|
||||
default :
|
||||
msg(MSG_WARN, "%s : Unknown Mode %d\n", __func__, mode);
|
||||
return -1;
|
||||
}
|
||||
msg(MSG_WARN, "%s : Unknown Mode %d\n", __func__, mode);
|
||||
return -1;
|
||||
|
||||
/* To check I2C module loaded */
|
||||
if (moduleLoaded(AML_MODULE_I2C) && (retPin == 205 || retPin == 206))
|
||||
return -1;
|
||||
else
|
||||
return retPin;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
#define GPIO_PIN_BASE 136
|
||||
|
||||
#define C2_GPIODV_PIN_START (GPIO_PIN_BASE + 45)
|
||||
#define C2_GPIODV_PIN_END (GPIO_PIN_BASE + 74)
|
||||
#define C2_GPIOY_PIN_START (GPIO_PIN_BASE + 75)
|
||||
#define C2_GPIOY_PIN_END (GPIO_PIN_BASE + 91)
|
||||
#define C2_GPIOX_PIN_START (GPIO_PIN_BASE + 92)
|
||||
@@ -31,6 +33,12 @@
|
||||
#define C2_GPIOY_PUPD_REG_OFFSET 0x13B
|
||||
#define C2_GPIOY_PUEN_REG_OFFSET 0x149
|
||||
|
||||
#define C2_GPIODV_FSEL_REG_OFFSET 0x10C
|
||||
#define C2_GPIODV_OUTP_REG_OFFSET 0x10D
|
||||
#define C2_GPIODV_INP_REG_OFFSET 0x10E
|
||||
#define C2_GPIODV_PUPD_REG_OFFSET 0x148
|
||||
#define C2_GPIODV_PUEN_REG_OFFSET 0x13A
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user