boards: hsdk: add cy8c95xx I/O expander, LEDs support

hsdk has an on board cy8c95xx I/O expander, and 4 on
board LEDs use the expander GPIO. Add the I/O expander
and LEDs in hsdk dts, then add documents for them.

Signed-off-by: Watson Zeng <zhiwei@synopsys.com>
This commit is contained in:
Watson Zeng 2021-03-31 14:19:04 +08:00 committed by Anas Nashif
commit 6cc84e6f1d
4 changed files with 126 additions and 1 deletions

View file

@ -37,4 +37,18 @@ endif # SPI_DW
endif # SPI endif # SPI
if I2C
config I2C_DW
default y
if I2C_DW
config I2C_DW_CLOCK_SPEED
default 200
endif #I2C_DW
endif #I2C
endif # BOARD_HSDK endif # BOARD_HSDK

View file

@ -8,7 +8,7 @@ Overview
The DesignWare(R) ARC(R) HS Development Kit is a ready-to-use platform for The DesignWare(R) ARC(R) HS Development Kit is a ready-to-use platform for
rapid software development on the ARC HS3x family of processors. It supports rapid software development on the ARC HS3x family of processors. It supports
single- and multi-core ARC HS34, HS36 and HS38 processors and offers a wide single-core and multi-core ARC HS34, HS36 and HS38 processors and offers a wide
range of interfaces including Ethernet, WiFi, Bluetooth, USB, SDIO, I2C, SPI, range of interfaces including Ethernet, WiFi, Bluetooth, USB, SDIO, I2C, SPI,
UART, I2S, ADC, PWM and GPIO. A Vivante GPU is also contained in the ARC UART, I2S, ADC, PWM and GPIO. A Vivante GPU is also contained in the ARC
Development System SoC. This allows developers to build and debug complex Development System SoC. This allows developers to build and debug complex
@ -298,6 +298,56 @@ using the CREG_GPIO_MUX register (see Pinmux ). After a reset, all ports are con
| IO13 | gpio[15] | - | spi2_clk | | IO13 | gpio[15] | - | spi2_clk |
+-------+------------+-----------------+------------+ +-------+------------+-----------------+------------+
I/O expander
============
The ARC HSDK board includes a CY8C9520A I/O expander from `Cypress CY8C9520A
<https://www.cypress.com/file/37971/download>`__. The I/O
expander offers additional GPIO signals and board control signals and can be accessed
through the on-board I2C bus, we have implemented a basic driver for it.
Tables below shows an overview of relevant I/O signals.
+------------+---------------------------------------------+
| Pins | Usage |
+------------+---------------------------------------------+
| port0_bit0 | RS9113 Bluetooth I2S RX enable (active low) |
+------------+---------------------------------------------+
| port0_bit1 | mikroBUS Reset (active low) |
+------------+---------------------------------------------+
| port0_bit2 | GPIO for Arduino AD0 |
+------------+---------------------------------------------+
| port0_bit3 | GPIO for Arduino AD1 |
+------------+---------------------------------------------+
| port0_bit4 | GPIO for Arduino AD2 |
+------------+---------------------------------------------+
| port0_bit5 | GPIO for Arduino AD3 |
+------------+---------------------------------------------+
| port1_bit4 | On-board user LED0 |
+------------+---------------------------------------------+
| port1_bit5 | On-board user LED1 |
+------------+---------------------------------------------+
| port1_bit6 | On-board user LED2 |
+------------+---------------------------------------------+
| port1_bit7 | On-board user LED3 |
+------------+---------------------------------------------+
On-board user LEDS
==================
The ARC HSDK includes 4 user LEDs(active high), which can be controlled through the I/O expander pins.
+-------+-----------------+
| LEDs | PINs |
+-------+-----------------+
| LED0 | GPX_port1_bit4 |
+-------+-----------------+
| LED1 | GPX_port1_bit5 |
+-------+-----------------+
| LED2 | GPX_port1_bit6 |
+-------+-----------------+
| LED3 | GPX_port1_bit7 |
+-------+-----------------+
For hardware feature details, refer to : `Designware HS Development Kit website For hardware feature details, refer to : `Designware HS Development Kit website
<https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__. <https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit>`__.

View file

@ -12,6 +12,30 @@
aliases { aliases {
uart-0 = &uart0; uart-0 = &uart0;
led0 = &led0;
led1 = &led1;
led2 = &led2;
led3 = &led3;
};
leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = <&cy8c95xx_port1 4 GPIO_ACTIVE_HIGH>;
label = "LED 0";
};
led1: led_1 {
gpios = <&cy8c95xx_port1 5 GPIO_ACTIVE_HIGH>;
label = "LED 1";
};
led2: led_2 {
gpios = <&cy8c95xx_port1 6 GPIO_ACTIVE_HIGH>;
label = "LED 2";
};
led3: led_3 {
gpios = <&cy8c95xx_port1 7 GPIO_ACTIVE_HIGH>;
label = "LED 3";
};
}; };
chosen { chosen {
@ -45,3 +69,38 @@
status = "okay"; status = "okay";
clock-frequency = <33333333>; clock-frequency = <33333333>;
}; };
&i2c0 {
status = "okay";
clock-frequency = <I2C_BITRATE_STANDARD>;
cy8c95xx: cy8c95xx@20 {
compatible = "cypress,cy8c95xx-gpio";
reg = <0x20>;
label = "cy8c95xx_gpio";
ranges;
#address-cells = <1>;
#size-cells = <0>;
cy8c95xx_port0: cy8c95xx_port@0 {
compatible = "cypress,cy8c95xx-gpio-port";
reg = <0x00>;
label = "cy8c95xx_port0";
gpio-controller;
#gpio-cells = <2>;
ngpios = <8>;
status = "okay";
};
cy8c95xx_port1: cy8c95xx_port@1 {
compatible = "cypress,cy8c95xx-gpio-port";
reg = <0x01>;
label = "cy8c95xx_port1";
gpio-controller;
#gpio-cells = <2>;
ngpios = <8>;
status = "okay";
};
};
};

View file

@ -18,3 +18,5 @@ CONFIG_GPIO=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_MP_NUM_CPUS=4 CONFIG_MP_NUM_CPUS=4
CONFIG_I2C=y
CONFIG_GPIO_CY8C95XX=y