driver: PS/2: npcx: add driver support for Nuvoton npcx family

The PS/2 module in npcx provides a hardware accelerator mechanism
including an 8-bit shift register, a state machine, and control logic
that handle both the incoming and outgoing data. The hardware
accelerator mechanism is shared by 4 PS/2 channels. To support it,
this CL separates the PS/2 driver into channel and controller drivers.
The controller driver is in charge of the PS/2 transaction. The channel
driver is in charge of the connection between the Zehpyr PS/2 API
interface and controller driver.

Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
This commit is contained in:
Jun Lin 2021-06-11 15:33:56 +08:00 committed by Anas Nashif
commit ba39c47187
11 changed files with 755 additions and 0 deletions

View file

@ -621,6 +621,47 @@
pin = <5>;
label = "PSL_OUT";
};
ps2_ctrl0: ps2@400b1000 {
compatible = "nuvoton,npcx-ps2-ctrl";
reg = <0x400b1000 0x1000>;
interrupts = <21 4>;
clocks = <&pcc NPCX_CLOCK_BUS_FREERUN NPCX_PWDWN_CTL1 3>;
label = "PS2_CTRL_0";
/* PS2 Channels - Please use them as PS2 node */
ps2_channel0: io_ps2_channel0 {
compatible = "nuvoton,npcx-ps2-channel";
channel = <0x00>;
pinctrl-0 = <&alt3_ps2_0_sl>; /* PIN67.70 */
label = "PS2_CHANNEL_0";
status = "disabled";
};
ps2_channel1: io_ps2_channel1 {
compatible = "nuvoton,npcx-ps2-channel";
channel = <0x01>;
pinctrl-0 = <&alt3_ps2_1_sl>; /* PIN62.63 */
label = "PS2_CHANNEL_1";
status = "disabled";
};
ps2_channel2: io_ps2_channel2 {
compatible = "nuvoton,npcx-ps2-channel";
channel = <0x02>;
pinctrl-0 = <&alt3_ps2_2_sl>; /* PIN37.34 */
label = "PS2_CHANNEL_2";
status = "disabled";
};
ps2_channel3: io_ps2_channel3 {
compatible = "nuvoton,npcx-ps2-channel";
channel = <0x03>;
pinctrl-0 = <&altc_ps2_3_sl2>; /* PINA6.A7 */
label = "PS2_CHANNEL_3";
status = "disabled";
};
};
};
};