Add pinctrl device, containing default config for uart, pwm, iis, iic and
mmc.
Signed-off-by: Ze Huang <18771902331@163.com>
---
arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi | 316 +++++++++++++++++++
arch/riscv/boot/dts/canaan/k230-pinctrl.h | 18 ++
arch/riscv/boot/dts/canaan/k230.dtsi | 2 +
3 files changed, 336 insertions(+)
create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi
create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.h
diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi
new file mode 100644
index 000000000000..0737f50d2868
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi
@@ -0,0 +1,316 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2024 Ze Huang <18771902331@163.com>
+ */
+#include "k230-pinctrl.h"
+
+/ {
+ soc {
+ pinctrl: pinctrl@91105000 {
+ compatible = "canaan,k230-pinctrl";
+ reg = <0x0 0x91105000 0x0 0x100>;
+
+ jtag_pins: jtag-pins {
+ jtag-tck-cfg {
+ pinmux = <K230_PINMUX(2, 1)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-pull-down;
+ input-schmitt-enable;
+ };
+
+ jtag-tdi-cfg {
+ pinmux = <K230_PINMUX(3, 1)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-disable;
+ };
+
+ jtag-tdo-cfg {
+ pinmux = <K230_PINMUX(4, 1)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ };
+
+ jtag-tms-cfg {
+ pinmux = <K230_PINMUX(5, 1)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-pull-up;
+ };
+ };
+
+ uart2_pins: uart2-pins {
+ uart2-pins-cfg {
+ pinmux = <K230_PINMUX(5, 3)>, /* uart2 txd */
+ <K230_PINMUX(6, 3)>; /* uart2 rxd */
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-disable;
+ };
+ };
+
+ pwm2_pins: pwm2-pins {
+ pwm2-pin-cfg {
+ pinmux = <K230_PINMUX(7, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ pwm3_pins: pwm3-pins {
+ pwm3-pin-cfg {
+ pinmux = <K230_PINMUX(8, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ pwm4_pins: pwm4-pins {
+ pwm4-pin-cfg {
+ pinmux = <K230_PINMUX(9, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ iis_pins: iis-pins {
+ iis-clk-cfg {
+ pinmux = <K230_PINMUX(32, 2)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ };
+
+ iis-ws-cfg {
+ pinmux = <K230_PINMUX(33, 2)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ };
+
+ iis-din0-cfg {
+ pinmux = <K230_PINMUX(34, 2)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-disable;
+ };
+
+ iis-dout0-cfg {
+ pinmux = <K230_PINMUX(35, 2)>;
+ slew-rate = <0>;
+ drive-strength = <4>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ };
+ };
+
+ uart4_pins: uart4-pins {
+ uart4-txd-cfg {
+ pinmux = <K230_PINMUX(36, 4)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+
+ uart4-rxd-cfg {
+ pinmux = <K230_PINMUX(37, 4)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ uart0_pins: uart0-pins {
+ uart0-txd-cfg {
+ pinmux = <K230_PINMUX(38, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+
+ uart0-rxd-cfg {
+ pinmux = <K230_PINMUX(39, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ iic1_pins: iic1-pins {
+ iic1-pins-cfg {
+ pinmux = <K230_PINMUX(40, 2)>, /* iic1 scl */
+ <K230_PINMUX(41, 2)>; /* iic1 sda */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+ };
+
+ iic3_pins: iic3-pins {
+ iic3-pins-cfg {
+ pinmux = <K230_PINMUX(44, 2)>, /* iic3 scl */
+ <K230_PINMUX(45, 2)>; /* iic3 sda */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+ };
+
+ iic4_pins: iic4-pins {
+ iic4-pins-cfg {
+ pinmux = <K230_PINMUX(46, 3)>, /* iic4 scl */
+ <K230_PINMUX(47, 3)>; /* iic4 sda */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+ };
+
+ iic0_pins: iic0-pins {
+ iic0-pins-cfg {
+ pinmux = <K230_PINMUX(48, 3)>, /* iic0 scl */
+ <K230_PINMUX(49, 3)>; /* iic0 sda */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_1V8>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+ };
+
+ uart3_pins: uart3-pins {
+ uart3-txd-cfg {
+ pinmux = <K230_PINMUX(50, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+
+ uart3-rxd-cfg {
+ pinmux = <K230_PINMUX(51, 1)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ input-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ key_pins: key-pins {
+ key-pins-cfg {
+ pinmux = <K230_PINMUX(52, 0)>, /* key0 */
+ <K230_PINMUX(53, 0)>; /* key1 */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ input-enable;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+ };
+
+ mmc1_pins: mmc1-pins {
+ mmc1-cmd-cfg {
+ pinmux = <K230_PINMUX(54, 2)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+
+ mmc1-clk-cfg {
+ pinmux = <K230_PINMUX(55, 2)>;
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ output-enable;
+ bias-disable;
+ input-schmitt-enable;
+ };
+
+ mmc1-data-cfg {
+ pinmux = <K230_PINMUX(56, 2)>, /* mmc1 data0 */
+ <K230_PINMUX(57, 2)>, /* mmc1 data1 */
+ <K230_PINMUX(58, 2)>, /* mmc1 data2 */
+ <K230_PINMUX(59, 2)>; /* mmc1 data3 */
+ slew-rate = <0>;
+ drive-strength = <7>;
+ power-source = <K230_MSC_3V3>;
+ input-enable;
+ output-enable;
+ bias-pull-up;
+ input-schmitt-enable;
+ };
+ };
+ };
+ };
+};
diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.h b/arch/riscv/boot/dts/canaan/k230-pinctrl.h
new file mode 100644
index 000000000000..f240a980f37a
--- /dev/null
+++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.h
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+/*
+ * Copyright (C) 2024 Canaan Bright Sight Co. Ltd
+ * Copyright (C) 2024 Ze Huang <18771902331@163.com>
+ */
+
+#ifndef _K230_PINCTRL_H
+#define _K230_PINCTRL_H
+
+#define K230_MSC_3V3 0
+#define K230_MSC_1V8 1
+
+#define BANK_VOLTAGE_DEFAULT K230_MSC_1V8
+#define BANK_VOLTAGE_IO50_IO61 K230_MSC_3V3
+
+#define K230_PINMUX(pin, mode) (((pin) << 8) | (mode))
+
+#endif /* _K230_PINCTRL_H */
diff --git a/arch/riscv/boot/dts/canaan/k230.dtsi b/arch/riscv/boot/dts/canaan/k230.dtsi
index 95c1a3d8fb11..a9354e538642 100644
--- a/arch/riscv/boot/dts/canaan/k230.dtsi
+++ b/arch/riscv/boot/dts/canaan/k230.dtsi
@@ -140,3 +140,5 @@ uart4: serial@91404000 {
};
};
};
+
+#include "k230-pinctrl.dtsi"
--
2.46.1
On 16/09/2024 08:47, Ze Huang wrote: > Add pinctrl device, containing default config for uart, pwm, iis, iic and > mmc. > > Signed-off-by: Ze Huang <18771902331@163.com> > --- > arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi | 316 +++++++++++++++++++ > arch/riscv/boot/dts/canaan/k230-pinctrl.h | 18 ++ > arch/riscv/boot/dts/canaan/k230.dtsi | 2 + > 3 files changed, 336 insertions(+) > create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.h > > diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > new file mode 100644 > index 000000000000..0737f50d2868 > --- /dev/null > +++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > @@ -0,0 +1,316 @@ > +// SPDX-License-Identifier: GPL-2.0 OR MIT > +/* > + * Copyright (C) 2024 Ze Huang <18771902331@163.com> > + */ > +#include "k230-pinctrl.h" > + > +/ { > + soc { > + pinctrl: pinctrl@91105000 { That's odd style - defining SoC nodes outside of SoC DTSI. Are you sure that's preferred coding style in RISC-V or Canaan? > + compatible = "canaan,k230-pinctrl"; > + reg = <0x0 0x91105000 0x0 0x100>; > + Best regards, Krzysztof
On 9/16/24 11:52 PM, Krzysztof Kozlowski wrote: > On 16/09/2024 08:47, Ze Huang wrote: >> Add pinctrl device, containing default config for uart, pwm, iis, iic and >> mmc. >> >> Signed-off-by: Ze Huang <18771902331@163.com> >> --- >> arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi | 316 +++++++++++++++++++ >> arch/riscv/boot/dts/canaan/k230-pinctrl.h | 18 ++ >> arch/riscv/boot/dts/canaan/k230.dtsi | 2 + >> 3 files changed, 336 insertions(+) >> create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >> create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.h >> >> diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >> new file mode 100644 >> index 000000000000..0737f50d2868 >> --- /dev/null >> +++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >> @@ -0,0 +1,316 @@ >> +// SPDX-License-Identifier: GPL-2.0 OR MIT >> +/* >> + * Copyright (C) 2024 Ze Huang <18771902331@163.com> >> + */ >> +#include "k230-pinctrl.h" >> + >> +/ { >> + soc { >> + pinctrl: pinctrl@91105000 { > That's odd style - defining SoC nodes outside of SoC DTSI. Are you sure > that's preferred coding style in RISC-V or Canaan? Pinctrl-related nodes were separated the for ease of maintenance, but the convention in Canaan is to place them in the board-level DTS file. Would it be better to stay consistent with their approach? >> + compatible = "canaan,k230-pinctrl"; >> + reg = <0x0 0x91105000 0x0 0x100>; >> + > Best regards, > Krzysztof
On Wed, Sep 18, 2024 at 04:39:29PM +0800, Ze Huang wrote: > On 9/16/24 11:52 PM, Krzysztof Kozlowski wrote: > > On 16/09/2024 08:47, Ze Huang wrote: > > > Add pinctrl device, containing default config for uart, pwm, iis, iic and > > > mmc. > > > > > > Signed-off-by: Ze Huang <18771902331@163.com> > > > --- > > > arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi | 316 +++++++++++++++++++ > > > arch/riscv/boot/dts/canaan/k230-pinctrl.h | 18 ++ > > > arch/riscv/boot/dts/canaan/k230.dtsi | 2 + > > > 3 files changed, 336 insertions(+) > > > create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > > > create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.h > > > > > > diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > > > new file mode 100644 > > > index 000000000000..0737f50d2868 > > > --- /dev/null > > > +++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi > > > @@ -0,0 +1,316 @@ > > > +// SPDX-License-Identifier: GPL-2.0 OR MIT > > > +/* > > > + * Copyright (C) 2024 Ze Huang <18771902331@163.com> > > > + */ > > > +#include "k230-pinctrl.h" > > > + > > > +/ { > > > + soc { > > > + pinctrl: pinctrl@91105000 { > > That's odd style - defining SoC nodes outside of SoC DTSI. Are you sure > > that's preferred coding style in RISC-V or Canaan? > > Pinctrl-related nodes were separated the for ease of maintenance, but the > convention in Canaan is to place them in the board-level DTS file. Would it > be better to stay consistent with their approach? Yeah, please put them in the board-level file. Thanks, Conor.
On 9/23/24 5:50 PM, Conor Dooley wrote: > On Wed, Sep 18, 2024 at 04:39:29PM +0800, Ze Huang wrote: >> On 9/16/24 11:52 PM, Krzysztof Kozlowski wrote: >>> On 16/09/2024 08:47, Ze Huang wrote: >>>> Add pinctrl device, containing default config for uart, pwm, iis, iic and >>>> mmc. >>>> >>>> Signed-off-by: Ze Huang <18771902331@163.com> >>>> --- >>>> arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi | 316 +++++++++++++++++++ >>>> arch/riscv/boot/dts/canaan/k230-pinctrl.h | 18 ++ >>>> arch/riscv/boot/dts/canaan/k230.dtsi | 2 + >>>> 3 files changed, 336 insertions(+) >>>> create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >>>> create mode 100644 arch/riscv/boot/dts/canaan/k230-pinctrl.h >>>> >>>> diff --git a/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >>>> new file mode 100644 >>>> index 000000000000..0737f50d2868 >>>> --- /dev/null >>>> +++ b/arch/riscv/boot/dts/canaan/k230-pinctrl.dtsi >>>> @@ -0,0 +1,316 @@ >>>> +// SPDX-License-Identifier: GPL-2.0 OR MIT >>>> +/* >>>> + * Copyright (C) 2024 Ze Huang <18771902331@163.com> >>>> + */ >>>> +#include "k230-pinctrl.h" >>>> + >>>> +/ { >>>> + soc { >>>> + pinctrl: pinctrl@91105000 { >>> That's odd style - defining SoC nodes outside of SoC DTSI. Are you sure >>> that's preferred coding style in RISC-V or Canaan? >> Pinctrl-related nodes were separated the for ease of maintenance, but the >> convention in Canaan is to place them in the board-level DTS file. Would it >> be better to stay consistent with their approach? > Yeah, please put them in the board-level file. OK > > Thanks, > Conor.
© 2016 - 2024 Red Hat, Inc.