Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ODROID-COMMON: Change pin mapping to support new dtbo and to unify with other odroid boards #769

Merged
merged 8 commits into from
Jan 5, 2024
11 changes: 10 additions & 1 deletion src/adafruit_blinka/board/hardkernel/odroidc4.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
SCLK = pin.SPI0_SCLK
MOSI = pin.SPI0_MOSI
MISO = pin.SPI0_MISO
SPI_CS0 = pin.SPI0_CS0
CS0 = pin.SPI0_CS0
CS1 = pin.GPIOH_6
SPI_CS0 = CS0 # aliased for backward compatibility

"""J2: physical pin number"""

Expand Down Expand Up @@ -57,3 +59,10 @@
""" ADC """
A0 = 40
A1 = 37

""" PWM """
PWM = D15

""" UART """
UART0_TX = D8
UART0_RX = D10
19 changes: 12 additions & 7 deletions src/adafruit_blinka/board/hardkernel/odroidm1.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,20 @@
D33 = pin.GPIO0B_5
D35 = pin.GPIO3D_5

SDA = D27
SCL = D28
SDA = D3
SCL = D5

SCLK = D23
MOSI = D19
MISO = D21
CS = D24
CS0 = D24
CS1 = D26
CS = CS0 # aliased for backward compatibility

UART0_TX = D13
UART0_RX = D11
UART1_TX = D8
UART1_RX = D10
UART0_TX = D8
UART0_RX = D10
UART1_TX = D13
UART1_RX = D11

UART1_CTS = D29
UART1_RTS = D31
Expand All @@ -55,3 +57,6 @@
""" ADC """
A0 = 40
A1 = 37

""" PWM """
PWM = D15
19 changes: 12 additions & 7 deletions src/adafruit_blinka/board/hardkernel/odroidm1s.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,20 @@
EXT_D13 = pin.GPIO3_B3
EXT_D14 = pin.GPIO3_B4

SDA = D27
SCL = D28
SDA = D3
SCL = D5

SCLK = D23
MOSI = D19
MISO = D21
CS = D24
CS0 = D24
CS1 = D26
CS = CS0 # aliased for backward compatibility

UART0_TX = D13
UART0_RX = D11
UART1_TX = D8
UART1_RX = D10
UART0_TX = D8
UART0_RX = D10
UART1_TX = D13
UART1_RX = D11

UART1_CTS = D29
UART1_RTS = D31
Expand All @@ -61,3 +63,6 @@
""" ADC """
A0 = 40
A1 = 37

""" PWM """
PWM = D15
69 changes: 36 additions & 33 deletions src/adafruit_blinka/board/hardkernel/odroidn2.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,47 +58,50 @@
globals()["SCL" + str(it[0])] = it[1]
globals()["SDA" + str(it[0])] = it[2]

SCL = None
SDA = None
# Set second i2c bus as default for backward compatibility.
if len(pin.i2cPorts) > 1:
SCL = pin.i2cPorts[1][1]
SDA = pin.i2cPorts[1][2]
elif len(pin.i2cPorts) > 0:
if pin.i2cPorts:
SCL = pin.i2cPorts[0][1]
SDA = pin.i2cPorts[0][2]

SCLK = pin.SPI0_SCLK
MOSI = pin.SPI0_MOSI
MISO = pin.SPI0_MISO
SPI_CS0 = pin.GPIO486
CS0 = pin.GPIO486
CS1 = pin.GPIO464
SPI_CS0 = CS0 # aliased for backward compatibility

D0 = GPIOX_3 # PIN_11
D1 = GPIOX_16 # PIN_12
D2 = GPIOX_4 # PIN_13
D3 = GPIOX_7 # PIN_15
D4 = GPIOX_0 # PIN_16
D5 = GPIOX_1 # PIN_18
D6 = GPIOX_2 # PIN_22
D7 = GPIOA_13 # PIN_7
D8 = GPIOX_17 # PIN_3
D9 = GPIOX_18 # PIN_5
D10 = GPIOX_10 # PIN_24
D11 = GPIOA_4 # PIN_26
D12 = GPIOX_8 # PIN_19
D13 = GPIOX_9 # PIN_21
D14 = GPIOX_11 # PIN_23
D15 = GPIOX_12 # PIN_8
D16 = GPIOX_13 # PIN_10
D21 = GPIOX_14 # PIN_29
D22 = GPIOX_15 # PIN_31
D23 = GPIOX_5 # PIN_33
D24 = GPIOX_6 # PIN_35
D26 = GPIOA_12 # PIN_32
D27 = GPIOX_19 # PIN_36
D30 = GPIOA_14 # PIN_27
D31 = GPIOA_15 # PIN_28
D3 = GPIOX_17
D5 = GPIOX_18
D7 = GPIOA_13
D8 = GPIOX_12
D10 = GPIOX_13
D11 = GPIOX_3
D12 = GPIOX_16
D13 = GPIOX_4
D15 = GPIOX_7
D16 = GPIOX_0
D18 = GPIOX_1
D19 = GPIOX_8
D21 = GPIOX_9
D22 = GPIOX_2
D23 = GPIOX_11
D24 = GPIOX_10
D26 = GPIOA_4
D27 = GPIOA_14
D28 = GPIOA_15
D29 = GPIOX_14
D31 = GPIOX_15
D32 = GPIOA_12
D33 = GPIOX_5
D35 = GPIOX_6
D36 = GPIOX_19

""" ADC """
A0 = 40
A1 = 37

""" PWM """
PWM = D15

""" UART """
UART0_TX = D8
UART0_RX = D10
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"""

from adafruit_blinka.agnostic import detector
from adafruit_blinka.microcontroller.alias import get_dts_alias
from adafruit_blinka.microcontroller.alias import get_dts_alias, get_pwm_chipid
from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin

try:
Expand Down Expand Up @@ -131,6 +131,9 @@
# ordered as spiId, sckId, mosiId, misoId
spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),)

# SysFs pwm outputs, pwm channel and pin in first tuple
pwmOuts = []

# ordered as uartId, txId, rxId
uartPorts = [
(1, UART1_TX, UART1_RX),
Expand All @@ -151,24 +154,55 @@
globals()[alias + "_SCL"] = GPIOA_15
globals()[alias + "_SDA"] = GPIOA_14
i2cPorts.append((int(alias[-1]), GPIOA_15, GPIOA_14))
alias = get_dts_alias("fdd24000.serial")
alias = get_dts_alias("ffd24000.serial")
if alias is not None:
globals()[alias + "_TX"] = GPIOX_12
globals()[alias + "_RX"] = GPIOX_13
uartPorts.append((int(alias[-1]), GPIOX_12, GPIOX_13))
alias = get_dts_alias("fdd23000.serial")
alias = get_dts_alias("ffd23000.serial")
if alias is not None:
globals()[alias + "_TX"] = GPIOX_6
globals()[alias + "_RX"] = GPIOX_7
uartPorts.append((int(alias[-1]), GPIOX_6, GPIOX_7))

if board in ("ODROID_C4"):
alias = get_pwm_chipid("ffd1b000.pwm")
if alias is not None:
globals()["PWMA"] = GPIOX_6
globals()["PWMB"] = GPIOX_19
pwmOuts.append(((int(alias[-1]), 0), GPIOX_6))
pwmOuts.append(((int(alias[-1]), 1), GPIOX_19))
alias = get_pwm_chipid("ffd1a000.pwm")
if alias is not None:
globals()["PWMC"] = GPIOX_5
globals()["PWMD"] = GPIOX_3
pwmOuts.append(((int(alias[-1]), 0), GPIOX_5))
pwmOuts.append(((int(alias[-1]), 1), GPIOX_3))
alias = get_pwm_chipid("ffd19000.pwm")
if alias is not None:
globals()["PWME"] = GPIOX_16
globals()["PWMF"] = GPIOH_5
pwmOuts.append(((int(alias[-1]), 0), GPIOX_16))
pwmOuts.append(((int(alias[-1]), 1), GPIOH_5))
analogIns.append((37, 0, 2))
analogIns.append((40, 0, 0))
if board in ("ODROID_N2"):
alias = get_pwm_chipid("ffd1a000.pwm")
if alias is not None:
globals()["PWMC"] = GPIOX_5
globals()["PWMD"] = GPIOX_6
pwmOuts.append(((int(alias[-1]), 0), GPIOX_5))
pwmOuts.append(((int(alias[-1]), 1), GPIOX_6))
alias = get_pwm_chipid("ffd19000.pwm")
if alias is not None:
globals()["PWME"] = GPIOX_16
globals()["PWMF"] = GPIOX_7
pwmOuts.append(((int(alias[-1]), 0), GPIOX_16))
pwmOuts.append(((int(alias[-1]), 1), GPIOX_7))
analogIns.append((37, 0, 3))
analogIns.append((40, 0, 2))

analogIns = tuple(analogIns)
i2cPorts = tuple(i2cPorts)
pwmOuts = tuple(pwmOuts)
uartPorts = tuple(uartPorts)