96boards: Add Ultra-96 board support
This commit adds Ultra96, one of the Consumer Edition boards of the 96Boards family. Ultra96 is an Arm-based, Xilinx Zynq UltraScale+ MPSoC development board. This board runs petalinux distribution on the ARM core and integrates Xilinx programmable logic (PL) UltraScale architecture in a single fabric. This board supports standard peripherals defined by 96Boards CE Specification. Since it ships with >4.8 kernel, only chardev mapping is supported for accessing GPIO. More information about this board can be found in 96Boards product page: https://www.96boards.org/product/ultra96/ Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
This commit is contained in:
committed by
Manivannan Sadhasivam
parent
71b87904a0
commit
9056556b7a
@@ -14,6 +14,7 @@ Board Support
|
|||||||
- [HiKey](http://www.96boards.org/product/hikey/)
|
- [HiKey](http://www.96boards.org/product/hikey/)
|
||||||
- [HiKey960](http://www.96boards.org/product/hikey960/)
|
- [HiKey960](http://www.96boards.org/product/hikey960/)
|
||||||
- [Rock960](http://www.96boards.org/product/rock960/)
|
- [Rock960](http://www.96boards.org/product/rock960/)
|
||||||
|
- [Ultra96](https://www.96boards.org/product/ultra96/)
|
||||||
|
|
||||||
Interface notes
|
Interface notes
|
||||||
---------------
|
---------------
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
#define PLATFORM_NAME_HIKEY "HIKEY"
|
#define PLATFORM_NAME_HIKEY "HIKEY"
|
||||||
#define PLATFORM_NAME_HIKEY960 "HIKEY960"
|
#define PLATFORM_NAME_HIKEY960 "HIKEY960"
|
||||||
#define PLATFORM_NAME_ROCK960 "ROCK960"
|
#define PLATFORM_NAME_ROCK960 "ROCK960"
|
||||||
|
#define PLATFORM_NAME_ULTRA96 "ULTRA96"
|
||||||
|
|
||||||
#define MAX_SIZE 64
|
#define MAX_SIZE 64
|
||||||
#define MMAP_PATH "/dev/mem"
|
#define MMAP_PATH "/dev/mem"
|
||||||
#define DB410C_MMAP_REG 0x01000000
|
#define DB410C_MMAP_REG 0x01000000
|
||||||
@@ -102,6 +104,14 @@ int rock960_ls_gpio_pins[MRAA_96BOARDS_LS_GPIO_COUNT] = {
|
|||||||
|
|
||||||
const char* rock960_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyS3", "/dev/ttyS4" };
|
const char* rock960_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyS3", "/dev/ttyS4" };
|
||||||
|
|
||||||
|
// Ultra96
|
||||||
|
int ultra96_chardev_map[MRAA_96BOARDS_LS_GPIO_COUNT][2] = {
|
||||||
|
{ 0, 36 }, { 0, 37 }, { 0, 39 }, { 0, 40 }, { 0, 44 }, { 0, 45 },
|
||||||
|
{ 0, 78 }, { 0, 79 }, { 0, 80 }, { 0, 81 }, { 0, 82 }, { 0, 83 },
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* ultra96_serialdev[MRAA_96BOARDS_LS_UART_COUNT] = { "/dev/ttyPS0", "/dev/ttyS0" };
|
||||||
|
|
||||||
// MMAP
|
// MMAP
|
||||||
static uint8_t* mmap_reg = NULL;
|
static uint8_t* mmap_reg = NULL;
|
||||||
static int mmap_fd = 0;
|
static int mmap_fd = 0;
|
||||||
@@ -286,6 +296,12 @@ mraa_96boards()
|
|||||||
ls_gpio_pins = rock960_ls_gpio_pins;
|
ls_gpio_pins = rock960_ls_gpio_pins;
|
||||||
b->uart_dev[0].device_path = (char*) rock960_serialdev[0];
|
b->uart_dev[0].device_path = (char*) rock960_serialdev[0];
|
||||||
b->uart_dev[1].device_path = (char*) rock960_serialdev[1];
|
b->uart_dev[1].device_path = (char*) rock960_serialdev[1];
|
||||||
|
} else if (mraa_file_contains(DT_BASE "/model", "ZynqMP ZCU100 RevC")) {
|
||||||
|
b->platform_name = PLATFORM_NAME_ULTRA96;
|
||||||
|
chardev_map = &ultra96_chardev_map;
|
||||||
|
b->uart_dev[0].device_path = (char*) ultra96_serialdev[0];
|
||||||
|
b->uart_dev[1].device_path = (char*) ultra96_serialdev[1];
|
||||||
|
b->chardev_capable = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,6 +320,11 @@ mraa_96boards()
|
|||||||
b->def_i2c_bus = 0;
|
b->def_i2c_bus = 0;
|
||||||
b->i2c_bus[0].bus_id = 6;
|
b->i2c_bus[0].bus_id = 6;
|
||||||
b->i2c_bus[1].bus_id = 1;
|
b->i2c_bus[1].bus_id = 1;
|
||||||
|
} else if (strncmp(b->platform_name, PLATFORM_NAME_ULTRA96, MAX_SIZE) == 0) {
|
||||||
|
b->i2c_bus_count = MRAA_96BOARDS_LS_I2C_COUNT;
|
||||||
|
b->def_i2c_bus = 0;
|
||||||
|
b->i2c_bus[0].bus_id = 2;
|
||||||
|
b->i2c_bus[1].bus_id = 3;
|
||||||
} else {
|
} else {
|
||||||
b->i2c_bus_count = MRAA_96BOARDS_LS_I2C_COUNT;
|
b->i2c_bus_count = MRAA_96BOARDS_LS_I2C_COUNT;
|
||||||
b->def_i2c_bus = 0;
|
b->def_i2c_bus = 0;
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ mraa_arm_platform()
|
|||||||
platform_type = MRAA_96BOARDS;
|
platform_type = MRAA_96BOARDS;
|
||||||
else if (mraa_file_contains("/proc/device-tree/model", "ROCK960"))
|
else if (mraa_file_contains("/proc/device-tree/model", "ROCK960"))
|
||||||
platform_type = MRAA_96BOARDS;
|
platform_type = MRAA_96BOARDS;
|
||||||
|
else if (mraa_file_contains("/proc/device-tree/model", "ZynqMP ZCU100 RevC"))
|
||||||
|
platform_type = MRAA_96BOARDS;
|
||||||
else if (mraa_file_contains("/proc/device-tree/compatible", "raspberrypi,"))
|
else if (mraa_file_contains("/proc/device-tree/compatible", "raspberrypi,"))
|
||||||
platform_type = MRAA_RASPBERRY_PI;
|
platform_type = MRAA_RASPBERRY_PI;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user