Commit e1641531 authored by Shawn Guo's avatar Shawn Guo

pinctrl: imx: move hard-coding data into device tree

Currently, all imx pinctrl drivers maintain a big array of struct
imx_pin_reg which hard-codes data like register offset and mux mode
setting for each pin function.  Every time a new imx SoC support is
added, we need to add such a big mount of data.  With moving to single
kernel build, it's only matter of time to be blamed on memory consuming.

With DTC pre-processor support in place, the patch moves all these data
into device tree by redefining the PIN_FUNC_ID in imxXX-pinfunc.h and
changing the PIN_FUNC_ID parsing code a little bit.

The pin id gets re-numbered based on mux register offset, or config
register offset if the pin has no mux register, so that kernel can
identify the pin id from register offsets provided by device tree.

As a bonus point of the change, those arbitrary magic numbers standing
for particular PIN_FUNC_ID in device tree sources are now replaced by
macros to improve the readability of dts files.
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
Acked-by: default avatarDong Aisheng <dong.aisheng@linaro.org>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 36dffd8f
...@@ -24,9 +24,9 @@ Required properties for iomux controller: ...@@ -24,9 +24,9 @@ Required properties for iomux controller:
Required properties for pin configuration node: Required properties for pin configuration node:
- fsl,pins: two integers array, represents a group of pins mux and config - fsl,pins: two integers array, represents a group of pins mux and config
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
pin working on a specific function, CONFIG is the pad setting value like pin working on a specific function, which consists of a tuple of
pull-up on this pin. Please refer to fsl,<soc>-pinctrl.txt for the valid <mux_reg conf_reg input_reg mux_val input_val>. CONFIG is the pad setting
pins and functions of each SoC. value like pull-up on this pin.
Bits used for CONFIG: Bits used for CONFIG:
NO_PAD_CTL(1 << 31): indicate this pin does not need config. NO_PAD_CTL(1 << 31): indicate this pin does not need config.
......
This diff is collapsed.
...@@ -222,13 +222,13 @@ &iomuxc { ...@@ -222,13 +222,13 @@ &iomuxc {
hog { hog {
pinctrl_hog: hoggrp { pinctrl_hog: hoggrp {
fsl,pins = < fsl,pins = <
694 0x20d5 /* MX51_PAD_GPIO1_0__SD1_CD */ MX51_PAD_GPIO1_0__SD1_CD 0x20d5
697 0x20d5 /* MX51_PAD_GPIO1_1__SD1_WP */ MX51_PAD_GPIO1_1__SD1_WP 0x20d5
737 0x100 /* MX51_PAD_GPIO1_5__GPIO1_5 */ MX51_PAD_GPIO1_5__GPIO1_5 0x100
740 0x100 /* MX51_PAD_GPIO1_6__GPIO1_6 */ MX51_PAD_GPIO1_6__GPIO1_6 0x100
121 0x5 /* MX51_PAD_EIM_A27__GPIO2_21 */ MX51_PAD_EIM_A27__GPIO2_21 0x5
402 0x85 /* MX51_PAD_CSPI1_SS0__GPIO4_24 */ MX51_PAD_CSPI1_SS0__GPIO4_24 0x85
405 0x85 /* MX51_PAD_CSPI1_SS1__GPIO4_25 */ MX51_PAD_CSPI1_SS1__GPIO4_25 0x85
>; >;
}; };
}; };
......
This diff is collapsed.
This diff is collapsed.
...@@ -112,40 +112,40 @@ &iomuxc { ...@@ -112,40 +112,40 @@ &iomuxc {
hog { hog {
pinctrl_hog: hoggrp { pinctrl_hog: hoggrp {
fsl,pins = < fsl,pins = <
1077 0x80000000 /* MX53_PAD_GPIO_1__GPIO1_1 */ MX53_PAD_GPIO_1__GPIO1_1 0x80000000
1085 0x80000000 /* MX53_PAD_GPIO_9__GPIO1_9 */ MX53_PAD_GPIO_9__GPIO1_9 0x80000000
486 0x80000000 /* MX53_PAD_EIM_EB3__GPIO2_31 */ MX53_PAD_EIM_EB3__GPIO2_31 0x80000000
739 0x80000000 /* MX53_PAD_GPIO_10__GPIO4_0 */ MX53_PAD_GPIO_10__GPIO4_0 0x80000000
218 0x80000000 /* MX53_PAD_DISP0_DAT16__GPIO5_10 */ MX53_PAD_DISP0_DAT16__GPIO5_10 0x80000000
226 0x80000000 /* MX53_PAD_DISP0_DAT17__GPIO5_11 */ MX53_PAD_DISP0_DAT17__GPIO5_11 0x80000000
233 0x80000000 /* MX53_PAD_DISP0_DAT18__GPIO5_12 */ MX53_PAD_DISP0_DAT18__GPIO5_12 0x80000000
241 0x80000000 /* MX53_PAD_DISP0_DAT19__GPIO5_13 */ MX53_PAD_DISP0_DAT19__GPIO5_13 0x80000000
429 0x80000000 /* MX53_PAD_EIM_D16__EMI_WEIM_D_16 */ MX53_PAD_EIM_D16__EMI_WEIM_D_16 0x80000000
435 0x80000000 /* MX53_PAD_EIM_D17__EMI_WEIM_D_17 */ MX53_PAD_EIM_D17__EMI_WEIM_D_17 0x80000000
441 0x80000000 /* MX53_PAD_EIM_D18__EMI_WEIM_D_18 */ MX53_PAD_EIM_D18__EMI_WEIM_D_18 0x80000000
448 0x80000000 /* MX53_PAD_EIM_D19__EMI_WEIM_D_19 */ MX53_PAD_EIM_D19__EMI_WEIM_D_19 0x80000000
456 0x80000000 /* MX53_PAD_EIM_D20__EMI_WEIM_D_20 */ MX53_PAD_EIM_D20__EMI_WEIM_D_20 0x80000000
464 0x80000000 /* MX53_PAD_EIM_D21__EMI_WEIM_D_21 */ MX53_PAD_EIM_D21__EMI_WEIM_D_21 0x80000000
471 0x80000000 /* MX53_PAD_EIM_D22__EMI_WEIM_D_22 */ MX53_PAD_EIM_D22__EMI_WEIM_D_22 0x80000000
477 0x80000000 /* MX53_PAD_EIM_D23__EMI_WEIM_D_23 */ MX53_PAD_EIM_D23__EMI_WEIM_D_23 0x80000000
492 0x80000000 /* MX53_PAD_EIM_D24__EMI_WEIM_D_24 */ MX53_PAD_EIM_D24__EMI_WEIM_D_24 0x80000000
500 0x80000000 /* MX53_PAD_EIM_D25__EMI_WEIM_D_25 */ MX53_PAD_EIM_D25__EMI_WEIM_D_25 0x80000000
508 0x80000000 /* MX53_PAD_EIM_D26__EMI_WEIM_D_26 */ MX53_PAD_EIM_D26__EMI_WEIM_D_26 0x80000000
516 0x80000000 /* MX53_PAD_EIM_D27__EMI_WEIM_D_27 */ MX53_PAD_EIM_D27__EMI_WEIM_D_27 0x80000000
524 0x80000000 /* MX53_PAD_EIM_D28__EMI_WEIM_D_28 */ MX53_PAD_EIM_D28__EMI_WEIM_D_28 0x80000000
532 0x80000000 /* MX53_PAD_EIM_D29__EMI_WEIM_D_29 */ MX53_PAD_EIM_D29__EMI_WEIM_D_29 0x80000000
540 0x80000000 /* MX53_PAD_EIM_D30__EMI_WEIM_D_30 */ MX53_PAD_EIM_D30__EMI_WEIM_D_30 0x80000000
548 0x80000000 /* MX53_PAD_EIM_D31__EMI_WEIM_D_31 */ MX53_PAD_EIM_D31__EMI_WEIM_D_31 0x80000000
637 0x80000000 /* MX53_PAD_EIM_DA0__EMI_NAND_WEIM_DA_0 */ MX53_PAD_EIM_DA0__EMI_NAND_WEIM_DA_0 0x80000000
642 0x80000000 /* MX53_PAD_EIM_DA1__EMI_NAND_WEIM_DA_1 */ MX53_PAD_EIM_DA1__EMI_NAND_WEIM_DA_1 0x80000000
647 0x80000000 /* MX53_PAD_EIM_DA2__EMI_NAND_WEIM_DA_2 */ MX53_PAD_EIM_DA2__EMI_NAND_WEIM_DA_2 0x80000000
652 0x80000000 /* MX53_PAD_EIM_DA3__EMI_NAND_WEIM_DA_3 */ MX53_PAD_EIM_DA3__EMI_NAND_WEIM_DA_3 0x80000000
657 0x80000000 /* MX53_PAD_EIM_DA4__EMI_NAND_WEIM_DA_4 */ MX53_PAD_EIM_DA4__EMI_NAND_WEIM_DA_4 0x80000000
662 0x80000000 /* MX53_PAD_EIM_DA5__EMI_NAND_WEIM_DA_5 */ MX53_PAD_EIM_DA5__EMI_NAND_WEIM_DA_5 0x80000000
667 0x80000000 /* MX53_PAD_EIM_DA6__EMI_NAND_WEIM_DA_6 */ MX53_PAD_EIM_DA6__EMI_NAND_WEIM_DA_6 0x80000000
611 0x80000000 /* MX53_PAD_EIM_OE__EMI_WEIM_OE */ MX53_PAD_EIM_OE__EMI_WEIM_OE 0x80000000
616 0x80000000 /* MX53_PAD_EIM_RW__EMI_WEIM_RW */ MX53_PAD_EIM_RW__EMI_WEIM_RW 0x80000000
607 0x80000000 /* MX53_PAD_EIM_CS1__EMI_WEIM_CS_1 */ MX53_PAD_EIM_CS1__EMI_WEIM_CS_1 0x80000000
>; >;
}; };
}; };
......
...@@ -82,14 +82,14 @@ &iomuxc { ...@@ -82,14 +82,14 @@ &iomuxc {
hog { hog {
pinctrl_hog: hoggrp { pinctrl_hog: hoggrp {
fsl,pins = < fsl,pins = <
424 0x80000000 /* MX53_PAD_EIM_EB2__GPIO2_30 */ MX53_PAD_EIM_EB2__GPIO2_30 0x80000000
449 0x80000000 /* MX53_PAD_EIM_D19__GPIO3_19 */ MX53_PAD_EIM_D19__GPIO3_19 0x80000000
693 0x80000000 /* MX53_PAD_EIM_DA11__GPIO3_11 */ MX53_PAD_EIM_DA11__GPIO3_11 0x80000000
697 0x80000000 /* MX53_PAD_EIM_DA12__GPIO3_12 */ MX53_PAD_EIM_DA12__GPIO3_12 0x80000000
701 0x80000000 /* MX53_PAD_EIM_DA13__GPIO3_13 */ MX53_PAD_EIM_DA13__GPIO3_13 0x80000000
705 0x80000000 /* MX53_PAD_EIM_DA14__GPIO3_14 */ MX53_PAD_EIM_DA14__GPIO3_14 0x80000000
868 0x80000000 /* MX53_PAD_PATA_DA_0__GPIO7_6 */ MX53_PAD_PATA_DA_0__GPIO7_6 0x80000000
873 0x80000000 /* MX53_PAD_PATA_DA_1__GPIO7_7 */ MX53_PAD_PATA_DA_1__GPIO7_7 0x80000000
>; >;
}; };
}; };
......
This diff is collapsed.
This diff is collapsed.
...@@ -110,21 +110,21 @@ &iomuxc { ...@@ -110,21 +110,21 @@ &iomuxc {
hog { hog {
pinctrl_hog: hoggrp { pinctrl_hog: hoggrp {
fsl,pins = < fsl,pins = <
1071 0x80000000 /* MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK */ MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 0x80000000
1141 0x80000000 /* MX53_PAD_GPIO_8__GPIO1_8 */ MX53_PAD_GPIO_8__GPIO1_8 0x80000000
982 0x80000000 /* MX53_PAD_PATA_DATA14__GPIO2_14 */ MX53_PAD_PATA_DATA14__GPIO2_14 0x80000000
989 0x80000000 /* MX53_PAD_PATA_DATA15__GPIO2_15 */ MX53_PAD_PATA_DATA15__GPIO2_15 0x80000000
693 0x80000000 /* MX53_PAD_EIM_DA11__GPIO3_11 */ MX53_PAD_EIM_DA11__GPIO3_11 0x80000000
697 0x80000000 /* MX53_PAD_EIM_DA12__GPIO3_12 */ MX53_PAD_EIM_DA12__GPIO3_12 0x80000000
701 0x80000000 /* MX53_PAD_EIM_DA13__GPIO3_13 */ MX53_PAD_EIM_DA13__GPIO3_13 0x80000000
868 0x80000000 /* MX53_PAD_PATA_DA_0__GPIO7_6 */ MX53_PAD_PATA_DA_0__GPIO7_6 0x80000000
1149 0x80000000 /* MX53_PAD_GPIO_16__GPIO7_11 */ MX53_PAD_GPIO_16__GPIO7_11 0x80000000
>; >;
}; };
led_pin_gpio7_7: led_gpio7_7@0 { led_pin_gpio7_7: led_gpio7_7@0 {
fsl,pins = < fsl,pins = <
873 0x80000000 /* MX53_PAD_PATA_DA_1__GPIO7_7 */ MX53_PAD_PATA_DA_1__GPIO7_7 0x80000000
>; >;
}; };
}; };
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -29,8 +29,8 @@ &iomuxc { ...@@ -29,8 +29,8 @@ &iomuxc {
hog { hog {
pinctrl_hog: hoggrp { pinctrl_hog: hoggrp {
fsl,pins = < fsl,pins = <
1376 0x80000000 /* MX6Q_PAD_NANDF_CS2__GPIO_6_15 */ MX6Q_PAD_NANDF_CS2__GPIO6_IO15 0x80000000
13 0x80000000 /* MX6Q_PAD_SD2_DAT2__GPIO_1_13 */ MX6Q_PAD_SD2_DAT2__GPIO1_IO13 0x80000000
>; >;
}; };
}; };
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment