From 3fa1237255303e8cd0e688772dc96db8faced91d Mon Sep 17 00:00:00 2001 From: Manivannan Sadhasivam Date: Thu, 5 Apr 2018 16:50:09 +0530 Subject: [PATCH] arm: 96boards: Add support for Hikey960 Add support for Hikey960 board from HiSilicon based on their Kirin960 SoC. Peripherals supported: 1. GPIO 2. UART 3. I2C For GPIO only Chardev interface has been added since this board only supports >=4.15 kernel and using legacy sysfs interface is highly discouraged. Signed-off-by: Manivannan Sadhasivam Signed-off-by: malikabhi05 --- docs/96boards.md | 1 + src/arm/96boards.c | 15 +++++++++++++++ src/arm/arm.c | 2 ++ 3 files changed, 18 insertions(+) diff --git a/docs/96boards.md b/docs/96boards.md index fb90100..fdf9621 100644 --- a/docs/96boards.md +++ b/docs/96boards.md @@ -11,6 +11,7 @@ Board Support - [DragonBoard 410c](http://www.96boards.org/product/dragonboard410c/) - [DragonBoard 820c](http://www.96boards.org/product/dragonboard820c/) - [HiKey](http://www.96boards.org/product/hikey/) +- [HiKey960](http://www.96boards.org/product/hikey960/) - [Bubblegum-96](http://www.96boards.org/product/bubblegum-96/) Interface notes diff --git a/src/arm/96boards.c b/src/arm/96boards.c index 9b6cfc1..74dedae 100644 --- a/src/arm/96boards.c +++ b/src/arm/96boards.c @@ -39,6 +39,7 @@ #define PLATFORM_NAME_DB410C "DB410C" #define PLATFORM_NAME_DB820C "DB820C" #define PLATFORM_NAME_HIKEY "HIKEY" +#define PLATFORM_NAME_HIKEY960 "HIKEY960" #define PLATFORM_NAME_BBGUM "BBGUM" #define MAX_SIZE 64 #define MMAP_PATH "/dev/mem" @@ -77,6 +78,14 @@ int hikey_chardev_map[MRAA_96BOARDS_LS_GPIO_COUNT][2] = { const char* hikey_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyAMA2", "/dev/ttyAMA3" }; +// HIKEY960 +int hikey960_chardev_map[MRAA_96BOARDS_LS_GPIO_COUNT][2] = { + { 26, 0 }, { 26, 1 }, { 26, 2 }, { 26, 3 }, { 26, 4 }, { 22, 6 }, + { 2, 7 }, { 5, 0 }, { 6, 4 }, { 2, 3 }, { 9, 3 }, { 2, 5 }, +}; + +const char* hikey960_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyAMA3", "/dev/ttyAMA6" }; + int bbgum_ls_gpio_pins[MRAA_96BOARDS_LS_GPIO_COUNT] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 155, 154 }; const char* bbgum_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyS3", "/dev/ttyS5" }; @@ -249,6 +258,12 @@ mraa_96boards() b->uart_dev[0].device_path = (char*) hikey_serialdev[0]; b->uart_dev[1].device_path = (char*) hikey_serialdev[1]; b->chardev_capable = 1; + } else if (mraa_file_contains(DT_BASE "/model", "HiKey960")) { + b->platform_name = PLATFORM_NAME_HIKEY960; + chardev_map = &hikey960_chardev_map; + b->uart_dev[0].device_path = (char*) hikey960_serialdev[0]; + b->uart_dev[1].device_path = (char*) hikey960_serialdev[1]; + b->chardev_capable = 1; } else if (mraa_file_contains(DT_BASE "/model", "s900")) { b->platform_name = PLATFORM_NAME_BBGUM; ls_gpio_pins = bbgum_ls_gpio_pins; diff --git a/src/arm/arm.c b/src/arm/arm.c index 4fd8ca7..94c10cc 100644 --- a/src/arm/arm.c +++ b/src/arm/arm.c @@ -92,6 +92,8 @@ mraa_arm_platform() else if (mraa_file_contains("/proc/device-tree/model", "HiKey Development Board")) platform_type = MRAA_96BOARDS; + else if (mraa_file_contains("/proc/device-tree/model", "HiKey960")) + platform_type = MRAA_96BOARDS; else if (mraa_file_contains("/proc/device-tree/model", "s900")) platform_type = MRAA_96BOARDS; else if (mraa_file_contains("/proc/device-tree/compatible", "raspberrypi,"))