summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Short <keithshort@chromium.org>2022-05-12 16:26:02 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-05-31 20:54:00 +0000
commitd7fafa9b52565238ed151f6681bd6e2d899ea04c (patch)
tree68fd5bb4c73e57682fc15a867aa547c21476de4f
parent74bde68fa512922cd05b4b19ea1e967d94ccf78b (diff)
downloadchrome-ec-d7fafa9b52565238ed151f6681bd6e2d899ea04c.tar.gz
zephyr: npcx: update kb raw driver for pinctrl
Update the Nuvoton cros_kb_raw driver to use pinctrl instead of pinmux. BUG=b:232543902 BRANCH=none TEST=zmake testall TEST=verify keyboard on herobrine Signed-off-by: Keith Short <keithshort@chromium.org> Change-Id: I1479d89c597d4d04b71507d63ecd4c42253f8bbf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3646962 Reviewed-by: Wai-Hong Tam <waihong@google.com> Reviewed-by: Mulin Chao <mlchao@nuvoton.com>
-rw-r--r--zephyr/boards/arm/npcx7/npcx7.dts41
-rw-r--r--zephyr/boards/arm/npcx9/npcx9.dtsi45
-rw-r--r--zephyr/boards/arm/npcx_evb/npcx_evb.dtsi43
-rw-r--r--zephyr/drivers/cros_kb_raw/cros_kb_raw_npcx.c20
-rw-r--r--zephyr/dts/bindings/cros_kb_raw/nuvoton,npcx-cros-kb-raw.yaml7
-rw-r--r--zephyr/include/cros/nuvoton/npcx.dtsi30
6 files changed, 82 insertions, 104 deletions
diff --git a/zephyr/boards/arm/npcx7/npcx7.dts b/zephyr/boards/arm/npcx7/npcx7.dts
index 2ea0c965ec..e615789e16 100644
--- a/zephyr/boards/arm/npcx7/npcx7.dts
+++ b/zephyr/boards/arm/npcx7/npcx7.dts
@@ -54,25 +54,26 @@
&cros_kb_raw {
status = "okay";
/* No KSO2 (it's inverted and implemented by GPIO) */
- pinctrl-0 = <&alt7_no_ksi0_sl
- &alt7_no_ksi1_sl
- &alt7_no_ksi2_sl
- &alt7_no_ksi3_sl
- &alt7_no_ksi4_sl
- &alt7_no_ksi5_sl
- &alt7_no_ksi6_sl
- &alt7_no_ksi7_sl
- &alt8_no_kso00_sl
- &alt8_no_kso01_sl
- &alt8_no_kso03_sl
- &alt8_no_kso04_sl
- &alt8_no_kso05_sl
- &alt8_no_kso06_sl
- &alt8_no_kso07_sl
- &alt9_no_kso08_sl
- &alt9_no_kso09_sl
- &alt9_no_kso10_sl
- &alt9_no_kso11_sl
- &alt9_no_kso12_sl
+ pinctrl-0 = <&ksi0_gp31
+ &ksi1_gp30
+ &ksi2_gp27
+ &ksi3_gp26
+ &ksi4_gp25
+ &ksi5_gp24
+ &ksi6_gp23
+ &ksi7_gp22
+ &kso00_gp21
+ &kso01_gp20
+ &kso03_gp16
+ &kso04_gp15
+ &kso05_gp14
+ &kso06_gp13
+ &kso07_gp12
+ &kso08_gp11
+ &kso09_gp10
+ &kso10_gp07
+ &kso11_gp06
+ &kso12_gp05
>;
+ pinctrl-names = "default";
};
diff --git a/zephyr/boards/arm/npcx9/npcx9.dtsi b/zephyr/boards/arm/npcx9/npcx9.dtsi
index fa4fb6809f..57a6422da7 100644
--- a/zephyr/boards/arm/npcx9/npcx9.dtsi
+++ b/zephyr/boards/arm/npcx9/npcx9.dtsi
@@ -49,27 +49,28 @@
&cros_kb_raw {
status = "okay";
/* No KSO2 (it's inverted and implemented by GPIO) */
- pinctrl-0 = <&alt7_no_ksi0_sl
- &alt7_no_ksi1_sl
- &alt7_no_ksi2_sl
- &alt7_no_ksi3_sl
- &alt7_no_ksi4_sl
- &alt7_no_ksi5_sl
- &alt7_no_ksi6_sl
- &alt7_no_ksi7_sl
- &alt8_no_kso00_sl
- &alt8_no_kso01_sl
- &alt8_no_kso03_sl
- &alt8_no_kso04_sl
- &alt8_no_kso05_sl
- &alt8_no_kso06_sl
- &alt8_no_kso07_sl
- &alt9_no_kso08_sl
- &alt9_no_kso09_sl
- &alt9_no_kso10_sl
- &alt9_no_kso11_sl
- &alt9_no_kso12_sl
- &alt9_no_kso13_sl
- &alt9_no_kso14_sl
+ pinctrl-0 = <&ksi0_gp31
+ &ksi1_gp30
+ &ksi2_gp27
+ &ksi3_gp26
+ &ksi4_gp25
+ &ksi5_gp24
+ &ksi6_gp23
+ &ksi7_gp22
+ &kso00_gp21
+ &kso01_gp20
+ &kso03_gp16
+ &kso04_gp15
+ &kso05_gp14
+ &kso06_gp13
+ &kso07_gp12
+ &kso08_gp11
+ &kso09_gp10
+ &kso10_gp07
+ &kso11_gp06
+ &kso12_gp05
+ &kso13_gp04
+ &kso14_gp82
>;
+ pinctrl-names = "default";
};
diff --git a/zephyr/boards/arm/npcx_evb/npcx_evb.dtsi b/zephyr/boards/arm/npcx_evb/npcx_evb.dtsi
index f1fb277302..9a9f221bfc 100644
--- a/zephyr/boards/arm/npcx_evb/npcx_evb.dtsi
+++ b/zephyr/boards/arm/npcx_evb/npcx_evb.dtsi
@@ -146,26 +146,27 @@
&cros_kb_raw {
status = "okay";
- pinctrl-0 = <&alt7_no_ksi0_sl
- &alt7_no_ksi1_sl
- &alt7_no_ksi2_sl
- &alt7_no_ksi3_sl
- &alt7_no_ksi4_sl
- &alt7_no_ksi5_sl
- &alt7_no_ksi6_sl
- &alt7_no_ksi7_sl
- &alt8_no_kso00_sl
- &alt8_no_kso01_sl
- &alt8_no_kso02_sl
- &alt8_no_kso03_sl
- &alt8_no_kso04_sl
- &alt8_no_kso05_sl
- &alt8_no_kso06_sl
- &alt8_no_kso07_sl
- &alt9_no_kso08_sl
- &alt9_no_kso09_sl
- &alt9_no_kso10_sl
- &alt9_no_kso11_sl
- &alt9_no_kso12_sl
+ pinctrl-0 = <&ksi0_gp31
+ &ksi1_gp30
+ &ksi2_gp27
+ &ksi3_gp26
+ &ksi4_gp25
+ &ksi5_gp24
+ &ksi6_gp23
+ &ksi7_gp22
+ &kso00_gp21
+ &kso01_gp20
+ &kso02_gp17
+ &kso03_gp16
+ &kso04_gp15
+ &kso05_gp14
+ &kso06_gp13
+ &kso07_gp12
+ &kso08_gp11
+ &kso09_gp10
+ &kso10_gp07
+ &kso11_gp06
+ &kso12_gp05
>;
+ pinctrl-names = "default";
};
diff --git a/zephyr/drivers/cros_kb_raw/cros_kb_raw_npcx.c b/zephyr/drivers/cros_kb_raw/cros_kb_raw_npcx.c
index 492c0aae82..cc60794d24 100644
--- a/zephyr/drivers/cros_kb_raw/cros_kb_raw_npcx.c
+++ b/zephyr/drivers/cros_kb_raw/cros_kb_raw_npcx.c
@@ -9,6 +9,7 @@
#include <zephyr/dt-bindings/clock/npcx_clock.h>
#include <drivers/cros_kb_raw.h>
#include <zephyr/drivers/clock_control.h>
+#include <zephyr/drivers/pinctrl.h>
#include <zephyr/kernel.h>
#include <soc.h>
#include <soc/nuvoton_npcx/reg_def_cros.h>
@@ -37,9 +38,8 @@ struct cros_kb_raw_npcx_config {
uintptr_t base;
/* clock configuration */
struct npcx_clk_cfg clk_cfg;
- /* pinmux configuration */
- const uint8_t alts_size;
- const struct npcx_alt *alts_list;
+ /* Pin control configuration */
+ const struct pinctrl_dev_config *pcfg;
/* Keyboard scan input (KSI) wake-up irq */
int irq;
/* Size of keyboard inputs-wui mapping array */
@@ -175,6 +175,7 @@ static int cros_kb_raw_npcx_init(const struct device *dev)
{
const struct cros_kb_raw_npcx_config *const config = DRV_CONFIG(dev);
struct kbs_reg *const inst = HAL_INSTANCE(dev);
+ int ret;
/* Pull-up KBSIN0-7 internally */
inst->KBSINPU = 0xFF;
@@ -198,8 +199,12 @@ static int cros_kb_raw_npcx_init(const struct device *dev)
SET_FIELD(inst->KBSCTL, NPCX_KBSCTL_KBHDRV_FIELD, 0x01);
}
- /* Configure pin-mux for kscan device */
- npcx_pinctrl_mux_configure(config->alts_list, config->alts_size, 1);
+ /* Configure pin control for kscan device */
+ ret = pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT);
+ if (ret < 0) {
+ LOG_ERR("KB Raw pinctrl setup failed (%d)", ret);
+ return ret;
+ }
/* Drive all column lines to low for detection any key press */
cros_kb_raw_npcx_drive_column(dev, KEYBOARD_COLUMN_ALL);
@@ -220,16 +225,15 @@ static const struct cros_kb_raw_driver_api cros_kb_raw_npcx_driver_api = {
.enable_interrupt = cros_kb_raw_npcx_enable_interrupt,
};
-static const struct npcx_alt cros_kb_raw_alts[] = NPCX_DT_ALT_ITEMS_LIST(0);
+PINCTRL_DT_INST_DEFINE(0);
static const struct cros_kb_raw_npcx_config cros_kb_raw_cfg = {
.base = DT_INST_REG_ADDR(0),
- .alts_size = ARRAY_SIZE(cros_kb_raw_alts),
- .alts_list = cros_kb_raw_alts,
.clk_cfg = NPCX_DT_CLK_CFG_ITEM(0),
.irq = DT_INST_IRQN(0),
.wui_size = NPCX_DT_WUI_ITEMS_LEN(0),
.wui_maps = NPCX_DT_WUI_ITEMS_LIST(0),
+ .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(0),
};
/* Verify there's exactly 1 enabled cros,kb-raw-npcx node. */
diff --git a/zephyr/dts/bindings/cros_kb_raw/nuvoton,npcx-cros-kb-raw.yaml b/zephyr/dts/bindings/cros_kb_raw/nuvoton,npcx-cros-kb-raw.yaml
index 7544039ffc..241cd11cbf 100644
--- a/zephyr/dts/bindings/cros_kb_raw/nuvoton,npcx-cros-kb-raw.yaml
+++ b/zephyr/dts/bindings/cros_kb_raw/nuvoton,npcx-cros-kb-raw.yaml
@@ -5,7 +5,7 @@ description: Nuvoton, NPCX-cros-kb-raw node
compatible: "nuvoton,npcx-cros-kb-raw"
-include: cros-kb-raw-controller.yaml
+include: [cros-kb-raw-controller.yaml, pinctrl-device.yaml]
properties:
reg:
@@ -15,9 +15,10 @@ properties:
required: true
pinctrl-0:
- type: phandles
required: true
- description: configurations of pinmux controllers
+
+ pinctrl-names:
+ required: true
wui_maps:
type: phandles
diff --git a/zephyr/include/cros/nuvoton/npcx.dtsi b/zephyr/include/cros/nuvoton/npcx.dtsi
index 92e36427e5..dbc4c3daaa 100644
--- a/zephyr/include/cros/nuvoton/npcx.dtsi
+++ b/zephyr/include/cros/nuvoton/npcx.dtsi
@@ -81,36 +81,6 @@
label = "CROS_KB_RAW_0";
interrupts = <49 4>;
clocks = <&pcc NPCX_CLOCK_BUS_APB1 NPCX_PWDWN_CTL1 0>;
- /*
- * No KSO2 (It's inverted and implemented by GPIO for
- * CONFIG_KEYBOARD_COL2_INVERTED.)
- */
- pinctrl-0 = <&alt7_no_ksi0_sl
- &alt7_no_ksi1_sl
- &alt7_no_ksi2_sl
- &alt7_no_ksi3_sl
- &alt7_no_ksi4_sl
- &alt7_no_ksi5_sl
- &alt7_no_ksi6_sl
- &alt7_no_ksi7_sl
- &alt8_no_kso00_sl
- &alt8_no_kso01_sl
- &alt8_no_kso03_sl
- &alt8_no_kso04_sl
- &alt8_no_kso05_sl
- &alt8_no_kso06_sl
- &alt8_no_kso07_sl
- &alt9_no_kso08_sl
- &alt9_no_kso09_sl
- &alt9_no_kso10_sl
- &alt9_no_kso11_sl
- &alt9_no_kso12_sl
- &alt9_no_kso13_sl
- &alt9_no_kso14_sl
- &alt9_no_kso15_sl
- &alta_no_kso16_sl
- &alta_no_kso17_sl
- >;
wui_maps = <&wui_io31 &wui_io30 &wui_io27 &wui_io26
&wui_io25 &wui_io24 &wui_io23 &wui_io22>;
};