mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 19:01:37 +00:00
e16415313c
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: Shawn Guo <shawn.guo@linaro.org> Acked-by: Dong Aisheng <dong.aisheng@linaro.org> Acked-by: Linus Walleij <linus.walleij@linaro.org>
39 lines
1.4 KiB
Plaintext
39 lines
1.4 KiB
Plaintext
* Freescale IMX6Q IOMUX Controller
|
|
|
|
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
|
and usage.
|
|
|
|
Required properties:
|
|
- compatible: "fsl,imx6q-iomuxc"
|
|
- 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
|
|
pin working on a specific function, CONFIG is the pad setting value like
|
|
pull-up for this pin. Please refer to imx6q datasheet for the valid pad
|
|
config settings.
|
|
|
|
CONFIG bits definition:
|
|
PAD_CTL_HYS (1 << 16)
|
|
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
|
PAD_CTL_PUS_47K_UP (1 << 14)
|
|
PAD_CTL_PUS_100K_UP (2 << 14)
|
|
PAD_CTL_PUS_22K_UP (3 << 14)
|
|
PAD_CTL_PUE (1 << 13)
|
|
PAD_CTL_PKE (1 << 12)
|
|
PAD_CTL_ODE (1 << 11)
|
|
PAD_CTL_SPEED_LOW (1 << 6)
|
|
PAD_CTL_SPEED_MED (2 << 6)
|
|
PAD_CTL_SPEED_HIGH (3 << 6)
|
|
PAD_CTL_DSE_DISABLE (0 << 3)
|
|
PAD_CTL_DSE_240ohm (1 << 3)
|
|
PAD_CTL_DSE_120ohm (2 << 3)
|
|
PAD_CTL_DSE_80ohm (3 << 3)
|
|
PAD_CTL_DSE_60ohm (4 << 3)
|
|
PAD_CTL_DSE_48ohm (5 << 3)
|
|
PAD_CTL_DSE_40ohm (6 << 3)
|
|
PAD_CTL_DSE_34ohm (7 << 3)
|
|
PAD_CTL_SRE_FAST (1 << 0)
|
|
PAD_CTL_SRE_SLOW (0 << 0)
|
|
|
|
Refer to imx6q-pinfunc.h in device tree source folder for all available
|
|
imx6q PIN_FUNC_ID.
|