@@ -44,6 +44,339 @@
#clock-cells = <1>;
};
+ pinctrl: ingenic-pinctrl@10010000 {
+ compatible = "ingenic,jz4780-pinctrl";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ gpio-chips {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ gpa: gpa {
+ reg = <0x10010000 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <17>;
+
+ ingenic,pull-ups = <0x3fffffff>;
+ };
+
+ gpb: gpb {
+ reg = <0x10010100 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <16>;
+
+ ingenic,pull-downs = <0x000f0c03>;
+ ingenic,pull-ups = <0xfff0030c>;
+ };
+
+ gpc: gpc {
+ reg = <0x10010200 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <15>;
+
+ ingenic,pull-ups = <0xffffffff>;
+ };
+
+ gpd: gpd {
+ reg = <0x10010300 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <14>;
+
+ ingenic,pull-downs = <0x0000b000>;
+ ingenic,pull-ups = <0xffff4fff>;
+ };
+
+ gpe: gpe {
+ reg = <0x10010400 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <13>;
+
+ ingenic,pull-downs = <0x00000483>;
+ ingenic,pull-ups = <0xfffffb7c>;
+ };
+
+ gpf: gpf {
+ reg = <0x10010500 0x100>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <12>;
+
+ ingenic,pull-downs = <0x00580ff0>;
+ ingenic,pull-ups = <0xffa7f00f>;
+ };
+ };
+
+ bias-configs {
+ nobias: nobias {
+ bias-disable;
+ };
+
+ pull_up: pull_up {
+ bias-pull-up;
+ };
+
+ pull_down: pull_down {
+ bias-pull-down;
+ };
+ };
+
+ functions {
+ pinfunc-uart0 {
+ pins_uart0_data: uart0-data {
+ ingenic,pins = <&gpf 0 0 &pull_up /* rxd */
+ &gpf 3 0 &nobias>; /* txd */
+ };
+
+ pins_uart0_dataplusflow: uart0-dataplusflow {
+ ingenic,pins = <&gpf 0 0 &pull_up /* rxd */
+ &gpf 1 0 &nobias /* cts */
+ &gpf 2 0 &nobias /* rts */
+ &gpf 3 0 &nobias>; /* txd */
+ };
+ };
+
+ pinfunc-uart1 {
+ pins_uart1_data: uart1-data {
+ ingenic,pins = <&gpd 26 0 &pull_up /* rxd */
+ &gpd 28 0 &nobias>; /* txd */
+ };
+
+ pins_uart1_dataplusflow: uart1-dataplusflow {
+ ingenic,pins = <&gpd 26 0 &pull_up /* rxd */
+ &gpd 27 0 &nobias /* cts */
+ &gpd 29 0 &nobias /* rts */
+ &gpd 28 0 &nobias>; /* txd */
+ };
+ };
+
+ pinfunc-uart2 {
+ pins_uart2_data: uart2-data {
+ ingenic,pins = <&gpd 6 1 &nobias /* rxd */
+ &gpd 7 1 &nobias>; /* txd */
+ };
+
+ pins_uart2_dataplusflow: uart2-dataplusflow {
+ ingenic,pins = <&gpd 6 1 &nobias /* rxd */
+ &gpd 5 1 &nobias /* cts */
+ &gpd 4 1 &nobias /* rts */
+ &gpd 7 1 &nobias>; /* txd */
+ };
+ };
+
+ pinfunc-uart3 {
+ pins_uart3_data: uart3-data {
+ ingenic,pins = <&gpd 12 0 &pull_down /* rxd */
+ &gpe 5 1 &nobias>; /* txd */
+ };
+
+ pins_uart3_dataplusflow: uart3-dataplusflow {
+ ingenic,pins = <&gpd 12 0 &pull_down /* rxd */
+ &gpe 5 1 &nobias /* txd */
+ &gpe 8 0 &nobias /* cts */
+ &gpe 9 0 &nobias>; /* rts */
+ };
+ };
+
+ pinfunc-uart4 {
+ pins_uart4_data: uart4-data {
+ ingenic,pins = <&gpc 20 2 &pull_up /* rxd */
+ &gpc 10 2 &nobias>; /* txd */
+ };
+ };
+
+ pinfunc-msc0 {
+ pins_msc0_pa: msc0-pa {
+ ingenic,pins = <&gpa 4 1 &nobias /* d4 */
+ &gpa 5 1 &nobias /* d5 */
+ &gpa 6 1 &nobias /* d6 */
+ &gpa 7 1 &nobias /* d7 */
+ &gpa 18 1 &nobias /* clk */
+ &gpa 19 1 &nobias /* cmd */
+ &gpa 20 1 &nobias /* d0 */
+ &gpa 21 1 &nobias /* d1 */
+ &gpa 22 1 &nobias /* d2 */
+ &gpa 23 1 &nobias /* d3 */
+ &gpa 24 1 &nobias>; /* rst */
+ };
+
+ pins_msc0_pe: msc0-pe {
+ ingenic,pins = <&gpe 20 0 &nobias /* d0 */
+ &gpe 21 0 &nobias /* d1 */
+ &gpe 22 0 &nobias /* d2 */
+ &gpe 23 0 &nobias /* d3 */
+ &gpe 28 0 &nobias /* clk */
+ &gpe 29 0 &nobias>; /* cmd */
+ };
+ };
+
+ pinfunc-msc1 {
+ pins_msc1_pd: msc1-pd {
+ ingenic,pins = <&gpd 20 0 &nobias /* d0 */
+ &gpd 21 0 &nobias /* d1 */
+ &gpd 22 0 &nobias /* d2 */
+ &gpd 23 0 &nobias /* d3 */
+ &gpd 24 0 &nobias /* clk */
+ &gpd 25 0 &nobias>; /* cmd */
+ };
+
+ pins_msc1_pe: msc1-pe {
+ ingenic,pins = <&gpe 20 1 &nobias /* d0 */
+ &gpe 21 1 &nobias /* d1 */
+ &gpe 22 1 &nobias /* d2 */
+ &gpe 23 1 &nobias /* d3 */
+ &gpe 28 1 &nobias /* clk */
+ &gpe 29 1 &nobias>; /* cmd */
+ };
+ };
+
+ pinfunc-nemc {
+ pins_nemc_data: nemc-data {
+ ingenic,pins = <&gpa 0 0 &nobias /* sd0 */
+ &gpa 1 0 &nobias /* sd1 */
+ &gpa 2 0 &nobias /* sd2 */
+ &gpa 3 0 &nobias /* sd3 */
+ &gpa 4 0 &nobias /* sd4 */
+ &gpa 5 0 &nobias /* sd5 */
+ &gpa 6 0 &nobias /* sd6 */
+ &gpa 7 0 &nobias>; /* sd7 */
+ };
+
+ pins_nemc_cle_ale: nemc-cle-ale {
+ ingenic,pins = <&gpb 0 0 &nobias /* sa0_cl */
+ &gpb 1 0 &nobias>; /* sa1_al */
+ };
+
+ pins_nemc_addr: nemc-addr {
+ ingenic,pins = <&gpb 0 0 &nobias /* sa0_cl */
+ &gpb 1 0 &nobias /* sa1_al */
+ &gpb 2 0 &nobias /* sa2 */
+ &gpb 3 0 &nobias /* sa3 */
+ &gpb 4 0 &nobias /* sa4 */
+ &gpb 5 0 &nobias>; /* sa5 */
+ };
+
+ pins_nemc_rd_we: nemc-rd-we {
+ ingenic,pins = <&gpa 16 0 &nobias /* rd */
+ &gpa 17 0 &nobias>; /* we */
+ };
+
+ pins_nemc_frd_fwe: nemc-frd-fwe {
+ ingenic,pins = <&gpa 18 0 &nobias /* rd */
+ &gpa 19 0 &nobias>; /* we */
+ };
+
+ pins_nemc_cs1: nemc-cs1 {
+ ingenic,pins = <&gpa 21 0 &nobias>; /* cs1 */
+ };
+
+ pins_nemc_cs6: nemc-cs6 {
+ ingenic,pins = <&gpa 26 0 &nobias>; /* cs6 */
+ };
+ };
+
+ pinfunc-i2c0 {
+ pins_i2c0_data: i2c0-data{
+ ingenic,pins = <&gpd 30 0 &nobias /* sda */
+ &gpd 31 0 &nobias>; /* sck */
+ };
+ };
+
+ pinfunc-i2c1 {
+ pins_i2c1_data: i2c1-data{
+ ingenic,pins = <&gpe 30 0 &nobias /* sda */
+ &gpe 31 0 &nobias>; /* sck */
+ };
+ };
+
+ pinfunc-i2c2 {
+ pins_i2c2_data: i2c2-data{
+ ingenic,pins = <&gpf 16 2 &nobias /* sda */
+ &gpf 17 2 &nobias>; /* sck */
+ };
+ };
+
+ pinfunc-i2c3 {
+ pins_i2c3_data: i2c3-data{
+ ingenic,pins = <&gpd 10 1 &nobias /* sda */
+ &gpd 11 1 &nobias>; /* sck */
+ };
+ };
+
+ pinfunc-i2c4 {
+ pins_i2c4_data: i2c4-data-pe{
+ ingenic,pins = <&gpe 12 1 &nobias /* sda */
+ &gpe 13 1 &nobias>; /* sck */
+ };
+
+ pins_i2c4_data_pf: i2c4-data-pf{
+ ingenic,pins = <&gpf 25 1 &nobias /* hdmi_sda */
+ &gpf 24 1 &nobias>; /* hdmi_sck */
+ };
+ };
+
+ pinfunc-cim {
+ pins_cim: cim-pb {
+ ingenic,pins = <&gpb 6 0 &nobias
+ &gpb 7 0 &nobias
+ &gpb 8 0 &nobias
+ &gpb 9 0 &nobias
+ &gpb 10 0 &nobias
+ &gpb 11 0 &nobias
+ &gpb 12 0 &nobias
+ &gpb 13 0 &nobias
+ &gpb 14 0 &nobias
+ &gpb 15 0 &nobias
+ &gpb 16 0 &nobias
+ &gpb 17 0 &nobias>;
+ };
+ };
+ };
+ };
+
uart0: serial@10030000 {
compatible = "ingenic,jz4780-uart";
reg = <0x10030000 0x100>;
For a description of the devicetree node, please read Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt Signed-off-by: Paul Cercueil <paul@crapouillou.net> --- arch/mips/boot/dts/ingenic/jz4780.dtsi | 333 +++++++++++++++++++++++++++++++++ 1 file changed, 333 insertions(+)