ODROID-C5: Add odroid-c5 wiring-pi support
- Rev. 20250106 - Warning: Use only GPIO functions. Signed-off-by: YoungSoo Shin <shinys000114@gmail.com> Change-Id: I02623a284c047c6b5e485d28c9714ed8e65025df
This commit is contained in:
@@ -29,6 +29,7 @@ cc_library_shared {
|
|||||||
"wiringPi/odroidm1.c",
|
"wiringPi/odroidm1.c",
|
||||||
"wiringPi/odroidm1s.c",
|
"wiringPi/odroidm1s.c",
|
||||||
"wiringPi/odroidm2.c",
|
"wiringPi/odroidm2.c",
|
||||||
|
"wiringPi/odroidc5.c",
|
||||||
"wiringPi/drcSerial.c",
|
"wiringPi/drcSerial.c",
|
||||||
"wiringPi/mcp23s08.c",
|
"wiringPi/mcp23s08.c",
|
||||||
"wiringPi/odroidn1.c",
|
"wiringPi/odroidn1.c",
|
||||||
|
|||||||
7
debian/changelog
vendored
7
debian/changelog
vendored
@@ -1,3 +1,10 @@
|
|||||||
|
odroid-wiringpi (3.17.1) stable; urgency=medium
|
||||||
|
|
||||||
|
* ODROID-C5: New Support for ODROID-C5
|
||||||
|
* ODROID: Change binary installation path
|
||||||
|
|
||||||
|
-- Bob Shin <shinys000114@gmail.com> Thu, 29 Oct 2024 06:07:00 +0000
|
||||||
|
|
||||||
odroid-wiringpi (3.17.0) stable; urgency=medium
|
odroid-wiringpi (3.17.0) stable; urgency=medium
|
||||||
|
|
||||||
* ODROID-M2: New Support for ODROID-M2
|
* ODROID-M2: New Support for ODROID-M2
|
||||||
|
|||||||
@@ -779,6 +779,69 @@ static const char *physNamesOdroidM2 [64] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
static const char *physNamesOdroidC5All [64] =
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
|
||||||
|
" 3.3V", "5V ",
|
||||||
|
" SDA.0", "5V ",
|
||||||
|
" SCL.0", "GND(0V) ",
|
||||||
|
"GPIOX_17", "TxD.0 ",
|
||||||
|
" GND(0V)", "RxD.0 ",
|
||||||
|
" GPIOX_5", "GPIOX_14",
|
||||||
|
"GPIOX_15", "GND(0V) ",
|
||||||
|
" GPIOX_4", "GPIODV_1",
|
||||||
|
" 3.3V", "GPIODV_2",
|
||||||
|
" MOSI", "GND(0V) ",
|
||||||
|
" MISO", "GPIOX_6 ",
|
||||||
|
" SLCK", "SS ",
|
||||||
|
" GND(0V)", "GPIOX_7 ",
|
||||||
|
" SDA.1", "SCL.1 ",
|
||||||
|
" GPIOH_4", "GND(0V) ",
|
||||||
|
" GPIOH_5", "GPIOX_2 ",
|
||||||
|
" GPIOX_0", "GND(0V) ",
|
||||||
|
" GPIOX_1", "GPIOX_3 ",
|
||||||
|
" AIN.1", "1V8 ",
|
||||||
|
" GND(0V)", "AIN.0 ",
|
||||||
|
|
||||||
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
|
NULL,NULL,NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
static const char *physNamesOdroidC5 [64] =
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
|
||||||
|
" 3.3V", "5V ",
|
||||||
|
" SDA.0", "5V ",
|
||||||
|
" SCL.0", "0V ",
|
||||||
|
" IO_D4", "TxD1 ",
|
||||||
|
" 0V", "RxD1 ",
|
||||||
|
" IO_X5", "IO_X14 ",
|
||||||
|
" IO_X15", "0V ",
|
||||||
|
" IO_X4", "IO_DV1 ",
|
||||||
|
" 3.3V", "IO_DV2 ",
|
||||||
|
" MOSI", "0V ",
|
||||||
|
" MISO", "IOX_6 ",
|
||||||
|
" SLCK", "SS ",
|
||||||
|
" 0V", "IOX_7 ",
|
||||||
|
" SDA.1", "SCL.1 ",
|
||||||
|
" IO_H4", "0V ",
|
||||||
|
" IO_H5", "IOX_2 ",
|
||||||
|
" IO_X0", "0V ",
|
||||||
|
" IO_X1", "IOX_3 ",
|
||||||
|
" AIN.1", "1V8 ",
|
||||||
|
" 0V", "AIN.0 ",
|
||||||
|
|
||||||
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
|
NULL,NULL,NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static void readallPhys(int model, int UNU rev, int physPin, const char *physNames[], int isAll) {
|
static void readallPhys(int model, int UNU rev, int physPin, const char *physNames[], int isAll) {
|
||||||
int pin ;
|
int pin ;
|
||||||
|
|
||||||
@@ -834,6 +897,7 @@ static void readallPhys(int model, int UNU rev, int physPin, const char *physNam
|
|||||||
case MODEL_ODROID_M1:
|
case MODEL_ODROID_M1:
|
||||||
case MODEL_ODROID_M1S:
|
case MODEL_ODROID_M1S:
|
||||||
case MODEL_ODROID_M2:
|
case MODEL_ODROID_M2:
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
printf (" | %2d | %5s", getDrive(pin), pupd[getPUPD(pin)]);
|
printf (" | %2d | %5s", getDrive(pin), pupd[getPUPD(pin)]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -878,6 +942,7 @@ static void readallPhys(int model, int UNU rev, int physPin, const char *physNam
|
|||||||
case MODEL_ODROID_M1:
|
case MODEL_ODROID_M1:
|
||||||
case MODEL_ODROID_M1S:
|
case MODEL_ODROID_M1S:
|
||||||
case MODEL_ODROID_M2:
|
case MODEL_ODROID_M2:
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
printf (" | %-5s | %-2d", pupd[getPUPD(pin)], getDrive(pin));
|
printf (" | %-5s | %-2d", pupd[getPUPD(pin)], getDrive(pin));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1108,6 +1173,10 @@ void doReadall(int argc, char *argv[]) {
|
|||||||
headerName = (isAll == FALSE) ? "--- M2 ---" : "---- Model ODROID-M2 ----";
|
headerName = (isAll == FALSE) ? "--- M2 ---" : "---- Model ODROID-M2 ----";
|
||||||
physNames = (char *) ((isAll == FALSE) ? physNamesOdroidM2 : physNamesOdroidM2All);
|
physNames = (char *) ((isAll == FALSE) ? physNamesOdroidM2 : physNamesOdroidM2All);
|
||||||
break;
|
break;
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
|
headerName = (isAll == FALSE) ? "--- C5 ---" : "---- Model ODROID-C5 ----";
|
||||||
|
physNames = (char *) ((isAll == FALSE) ? physNamesOdroidC5 : physNamesOdroidC5All);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
printf("Oops - unknown model: %d\n", model);
|
printf("Oops - unknown model: %d\n", model);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ libwiringPi_la_SOURCES = \
|
|||||||
odroidc1.c \
|
odroidc1.c \
|
||||||
odroidc2.c \
|
odroidc2.c \
|
||||||
odroidc4.c \
|
odroidc4.c \
|
||||||
|
odroidc5.c \
|
||||||
odroidhc4.c \
|
odroidhc4.c \
|
||||||
odroidm1.c \
|
odroidm1.c \
|
||||||
odroidm1s.c \
|
odroidm1s.c \
|
||||||
|
|||||||
1005
wiringPi/odroidc5.c
Normal file
1005
wiringPi/odroidc5.c
Normal file
File diff suppressed because it is too large
Load Diff
68
wiringPi/odroidc5.h
Normal file
68
wiringPi/odroidc5.h
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*
|
||||||
|
|
||||||
|
WiringPi ODROID-C5 Board Header file
|
||||||
|
|
||||||
|
*/
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
#ifndef __ODROID_C5_H__
|
||||||
|
#define __ODROID_C5_H__
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define C5_PWM_INTERNAL_CLK 24000000
|
||||||
|
|
||||||
|
#define C5_GPIO_BASE 0xfe004000
|
||||||
|
|
||||||
|
#define C5_GPIO_D_WPI_START 452
|
||||||
|
#define C5_GPIO_DV_WPI_START 457
|
||||||
|
#define C5_GPIO_H_WPI_START 464
|
||||||
|
#define C5_GPIO_X_WPI_START 476
|
||||||
|
|
||||||
|
#define C5_GPIO_D(REG) (REG + C5_GPIO_D_WPI_START)
|
||||||
|
#define C5_GPIO_DV(REG) (REG + C5_GPIO_DV_WPI_START)
|
||||||
|
#define C5_GPIO_H(REG) (REG + C5_GPIO_H_WPI_START)
|
||||||
|
#define C5_GPIO_X(REG) (REG + C5_GPIO_X_WPI_START)
|
||||||
|
|
||||||
|
#define C5_IS_GPIO_D(W) (W >= C5_GPIO_D(2) && W <= C5_GPIO_D(4))
|
||||||
|
#define C5_IS_GPIO_DV(W) (W >= C5_GPIO_DV(1) && W <= C5_GPIO_DV(2))
|
||||||
|
#define C5_IS_GPIO_H(W) (W >= C5_GPIO_H(4) && W <= C5_GPIO_H(5))
|
||||||
|
#define C5_IS_GPIO_X(W) (W >= C5_GPIO_X(0) && W <= C5_GPIO_X(18) && W != C5_GPIO_X(16))
|
||||||
|
#define C5_IS_GPIO_X_EXT(W) (W >= C5_GPIO_X(16) && W <= C5_GPIO_X(18))
|
||||||
|
|
||||||
|
#define C5_PIN_MUX_REG2_OFFSET 0x02
|
||||||
|
#define C5_PIN_MUX_REG3_OFFSET 0x03
|
||||||
|
#define C5_PIN_MUX_REG4_OFFSET 0x04
|
||||||
|
#define C5_PIN_MUX_REG5_OFFSET 0x05
|
||||||
|
#define C5_PIN_MUX_REGB_OFFSET 0x0b
|
||||||
|
#define C5_PIN_MUX_REGG_OFFSET 0x10
|
||||||
|
|
||||||
|
#define C5_GPIO_X_OFFSET 0x40
|
||||||
|
#define C5_GPIO_H_OFFSET 0x50
|
||||||
|
#define C5_GPIO_D_OFFSET 0x60
|
||||||
|
#define C5_GPIO_DV_OFFSET 0xa0
|
||||||
|
|
||||||
|
#define C5_GPIO_I_OFFSET 0x00
|
||||||
|
#define C5_GPIO_O_OFFSET 0x01
|
||||||
|
#define C5_GPIO_OEN_OFFSET 0x02
|
||||||
|
#define C5_GPIO_PULL_EN_OFFSET 0x03
|
||||||
|
#define C5_GPIO_PULL_UP_OFFSET 0x04
|
||||||
|
#define C5_GPIO_DS_OFFSET 0x07
|
||||||
|
#define C5_GPIO_DS_EXT_OFFSET 0x08
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void init_odroidc5 (struct libodroid *libwiring);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
#endif /* __ODROID_C5_H__ */
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
#include "odroidc4.h"
|
#include "odroidc4.h"
|
||||||
#include "odroidm1.h"
|
#include "odroidm1.h"
|
||||||
#include "odroidm2.h"
|
#include "odroidm2.h"
|
||||||
|
#include "odroidc5.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
// Const string define
|
// Const string define
|
||||||
@@ -67,6 +68,7 @@ const char *piModelNames [16] =
|
|||||||
"ODROID-M1",
|
"ODROID-M1",
|
||||||
"ODROID-M1S",
|
"ODROID-M1S",
|
||||||
"ODROID-M2",
|
"ODROID-M2",
|
||||||
|
"ODROID-C5",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *piRevisionNames [16] =
|
const char *piRevisionNames [16] =
|
||||||
@@ -551,6 +553,11 @@ int piGpioLayout (void) {
|
|||||||
libwiring.mem = 5;
|
libwiring.mem = 5;
|
||||||
libwiring.rev = 1;
|
libwiring.rev = 1;
|
||||||
break;
|
break;
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
|
libwiring.maker = MAKER_AMLOGIC;
|
||||||
|
libwiring.mem = 4;
|
||||||
|
libwiring.rev = 1;
|
||||||
|
break;
|
||||||
case MODEL_UNKNOWN:
|
case MODEL_UNKNOWN:
|
||||||
default:
|
default:
|
||||||
libwiring.model = MAKER_UNKNOWN;
|
libwiring.model = MAKER_UNKNOWN;
|
||||||
@@ -1279,6 +1286,9 @@ int wiringPiSetup (void)
|
|||||||
case MODEL_ODROID_M2:
|
case MODEL_ODROID_M2:
|
||||||
init_odroidm2(&libwiring);
|
init_odroidm2(&libwiring);
|
||||||
break;
|
break;
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
|
init_odroidc5(&libwiring);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return wiringPiFailure (WPI_ALMOST,
|
return wiringPiFailure (WPI_ALMOST,
|
||||||
"wiringPiSetup: Unknown model\n");
|
"wiringPiSetup: Unknown model\n");
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
#define MODEL_ODROID_M1 8
|
#define MODEL_ODROID_M1 8
|
||||||
#define MODEL_ODROID_M1S 9
|
#define MODEL_ODROID_M1S 9
|
||||||
#define MODEL_ODROID_M2 10
|
#define MODEL_ODROID_M2 10
|
||||||
|
#define MODEL_ODROID_C5 11
|
||||||
|
|
||||||
#define MAKER_UNKNOWN 0
|
#define MAKER_UNKNOWN 0
|
||||||
#define MAKER_AMLOGIC 1
|
#define MAKER_AMLOGIC 1
|
||||||
|
|||||||
@@ -270,6 +270,8 @@ int wiringPiI2CSetup (const int devId)
|
|||||||
case MODEL_ODROID_M1S:
|
case MODEL_ODROID_M1S:
|
||||||
case MODEL_ODROID_M2:
|
case MODEL_ODROID_M2:
|
||||||
device = "/dev/i2c-0";
|
device = "/dev/i2c-0";
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
|
device = "/dev/i2c-0";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ int wiringPiSPISetupMode (int channel, int speed, int mode)
|
|||||||
case MODEL_ODROID_M1:
|
case MODEL_ODROID_M1:
|
||||||
case MODEL_ODROID_M1S:
|
case MODEL_ODROID_M1S:
|
||||||
case MODEL_ODROID_M2:
|
case MODEL_ODROID_M2:
|
||||||
|
case MODEL_ODROID_C5:
|
||||||
sprintf(device, "%s%d", spiDevType0, channel);
|
sprintf(device, "%s%d", spiDevType0, channel);
|
||||||
break;
|
break;
|
||||||
case MODEL_ODROID_XU3:
|
case MODEL_ODROID_XU3:
|
||||||
|
|||||||
Reference in New Issue
Block a user