mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +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>
298 lines
6.0 KiB
Plaintext
298 lines
6.0 KiB
Plaintext
/*
|
|
* Copyright 2011 Freescale Semiconductor, Inc.
|
|
* Copyright 2011 Linaro Ltd.
|
|
*
|
|
* The code contained herein is licensed under the GNU General Public
|
|
* License. You may obtain a copy of the GNU General Public License
|
|
* Version 2 or later at the following locations:
|
|
*
|
|
* http://www.opensource.org/licenses/gpl-license.html
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*/
|
|
|
|
/dts-v1/;
|
|
#include "imx51.dtsi"
|
|
|
|
/ {
|
|
model = "Freescale i.MX51 Babbage Board";
|
|
compatible = "fsl,imx51-babbage", "fsl,imx51";
|
|
|
|
memory {
|
|
reg = <0x90000000 0x20000000>;
|
|
};
|
|
|
|
display@di0 {
|
|
compatible = "fsl,imx-parallel-display";
|
|
crtcs = <&ipu 0>;
|
|
interface-pix-fmt = "rgb24";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_ipu_disp1_1>;
|
|
};
|
|
|
|
display@di1 {
|
|
compatible = "fsl,imx-parallel-display";
|
|
crtcs = <&ipu 1>;
|
|
interface-pix-fmt = "rgb565";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_ipu_disp2_1>;
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
|
|
power {
|
|
label = "Power Button";
|
|
gpios = <&gpio2 21 0>;
|
|
linux,code = <116>; /* KEY_POWER */
|
|
gpio-key,wakeup;
|
|
};
|
|
};
|
|
|
|
sound {
|
|
compatible = "fsl,imx51-babbage-sgtl5000",
|
|
"fsl,imx-audio-sgtl5000";
|
|
model = "imx51-babbage-sgtl5000";
|
|
ssi-controller = <&ssi2>;
|
|
audio-codec = <&sgtl5000>;
|
|
audio-routing =
|
|
"MIC_IN", "Mic Jack",
|
|
"Mic Jack", "Mic Bias",
|
|
"Headphone Jack", "HP_OUT";
|
|
mux-int-port = <2>;
|
|
mux-ext-port = <3>;
|
|
};
|
|
};
|
|
|
|
&esdhc1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_esdhc1_1>;
|
|
fsl,cd-controller;
|
|
fsl,wp-controller;
|
|
status = "okay";
|
|
};
|
|
|
|
&esdhc2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_esdhc2_1>;
|
|
cd-gpios = <&gpio1 6 0>;
|
|
wp-gpios = <&gpio1 5 0>;
|
|
status = "okay";
|
|
};
|
|
|
|
&uart3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_uart3_1>;
|
|
fsl,uart-has-rtscts;
|
|
status = "okay";
|
|
};
|
|
|
|
&ecspi1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_ecspi1_1>;
|
|
fsl,spi-num-chipselects = <2>;
|
|
cs-gpios = <&gpio4 24 0>, <&gpio4 25 0>;
|
|
status = "okay";
|
|
|
|
pmic: mc13892@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "fsl,mc13892";
|
|
spi-max-frequency = <6000000>;
|
|
reg = <0>;
|
|
interrupt-parent = <&gpio1>;
|
|
interrupts = <8 0x4>;
|
|
|
|
regulators {
|
|
sw1_reg: sw1 {
|
|
regulator-min-microvolt = <600000>;
|
|
regulator-max-microvolt = <1375000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw2_reg: sw2 {
|
|
regulator-min-microvolt = <900000>;
|
|
regulator-max-microvolt = <1850000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw3_reg: sw3 {
|
|
regulator-min-microvolt = <1100000>;
|
|
regulator-max-microvolt = <1850000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw4_reg: sw4 {
|
|
regulator-min-microvolt = <1100000>;
|
|
regulator-max-microvolt = <1850000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vpll_reg: vpll {
|
|
regulator-min-microvolt = <1050000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdig_reg: vdig {
|
|
regulator-min-microvolt = <1650000>;
|
|
regulator-max-microvolt = <1650000>;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vsd_reg: vsd {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3150000>;
|
|
};
|
|
|
|
vusb2_reg: vusb2 {
|
|
regulator-min-microvolt = <2400000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vvideo_reg: vvideo {
|
|
regulator-min-microvolt = <2775000>;
|
|
regulator-max-microvolt = <2775000>;
|
|
};
|
|
|
|
vaudio_reg: vaudio {
|
|
regulator-min-microvolt = <2300000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
};
|
|
|
|
vcam_reg: vcam {
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
};
|
|
|
|
vgen1_reg: vgen1 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
};
|
|
|
|
vgen2_reg: vgen2 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <3150000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vgen3_reg: vgen3 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
};
|
|
|
|
flash: at45db321d@1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
|
|
spi-max-frequency = <25000000>;
|
|
reg = <1>;
|
|
|
|
partition@0 {
|
|
label = "U-Boot";
|
|
reg = <0x0 0x40000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@40000 {
|
|
label = "Kernel";
|
|
reg = <0x40000 0x3c0000>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&ssi2 {
|
|
fsl,mode = "i2s-slave";
|
|
status = "okay";
|
|
};
|
|
|
|
&iomuxc {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_hog>;
|
|
|
|
hog {
|
|
pinctrl_hog: hoggrp {
|
|
fsl,pins = <
|
|
MX51_PAD_GPIO1_0__SD1_CD 0x20d5
|
|
MX51_PAD_GPIO1_1__SD1_WP 0x20d5
|
|
MX51_PAD_GPIO1_5__GPIO1_5 0x100
|
|
MX51_PAD_GPIO1_6__GPIO1_6 0x100
|
|
MX51_PAD_EIM_A27__GPIO2_21 0x5
|
|
MX51_PAD_CSPI1_SS0__GPIO4_24 0x85
|
|
MX51_PAD_CSPI1_SS1__GPIO4_25 0x85
|
|
>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&uart1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_uart1_1>;
|
|
fsl,uart-has-rtscts;
|
|
status = "okay";
|
|
};
|
|
|
|
&uart2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_uart2_1>;
|
|
status = "okay";
|
|
};
|
|
|
|
&i2c2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_i2c2_1>;
|
|
status = "okay";
|
|
|
|
sgtl5000: codec@0a {
|
|
compatible = "fsl,sgtl5000";
|
|
reg = <0x0a>;
|
|
clock-frequency = <26000000>;
|
|
VDDA-supply = <&vdig_reg>;
|
|
VDDIO-supply = <&vvideo_reg>;
|
|
};
|
|
};
|
|
|
|
&audmux {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_audmux_1>;
|
|
status = "okay";
|
|
};
|
|
|
|
&fec {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_fec_1>;
|
|
phy-mode = "mii";
|
|
status = "okay";
|
|
};
|
|
|
|
&kpp {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_kpp_1>;
|
|
linux,keymap = <0x00000067 /* KEY_UP */
|
|
0x0001006c /* KEY_DOWN */
|
|
0x00020072 /* KEY_VOLUMEDOWN */
|
|
0x00030066 /* KEY_HOME */
|
|
0x0100006a /* KEY_RIGHT */
|
|
0x01010069 /* KEY_LEFT */
|
|
0x0102001c /* KEY_ENTER */
|
|
0x01030073 /* KEY_VOLUMEUP */
|
|
0x02000040 /* KEY_F6 */
|
|
0x02010042 /* KEY_F8 */
|
|
0x02020043 /* KEY_F9 */
|
|
0x02030044 /* KEY_F10 */
|
|
0x0300003b /* KEY_F1 */
|
|
0x0301003c /* KEY_F2 */
|
|
0x0302003d /* KEY_F3 */
|
|
0x03030074>; /* KEY_POWER */
|
|
status = "okay";
|
|
};
|