[PATCH] efikamx: reintroduce Genesi Efika MX Smarttop via device tree

Shawn Guo shawn.guo at linaro.org
Wed Aug 8 11:15:58 EDT 2012


On Tue, Aug 07, 2012 at 04:46:18PM -0500, Matt Sealey wrote:
> This device tree only supports the final retail board ("TO3").
> 
> It is currently feature equivalent to the MX51 Babbage device tree. The
> following features have been tested and work as well as can be expected:
> 
> * Serial port
> * SD card support
> * I2C bus
> * SGTL5000 audio support via the internal speaker
> * SDMA support (via audio)
> * SPI bus
> * NOR flash (at 25MHz bus speed)
> * MC13892 PMIC Regulator and Realtime clock functions
> 
> Since the board requires some extra work on the PMIC to power off, the system
> will instead just halt, however reboot works. Other missing features are due
> to a lack of drivers or device tree bindings currently.
> 
> Signed-off-by: Matt Sealey <matt at genesi-usa.com>
> Signed-off-by: Steev Klimaszewski <steev at genesi-usa.com>
> ---
>  arch/arm/boot/dts/imx51-efikamx.dts |  247 +++++++++++++++++++++++++++++++++++
>  arch/arm/mach-imx/Makefile.boot     |    2 +-
>  2 files changed, 248 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/imx51-efikamx.dts
> 
> diff --git a/arch/arm/boot/dts/imx51-efikamx.dts b/arch/arm/boot/dts/imx51-efikamx.dts
> new file mode 100644
> index 0000000..dd14f77
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51-efikamx.dts
> @@ -0,0 +1,247 @@
> +/*
> + * Copyright 2011 Freescale Semiconductor, Inc.
> + * Copyright 2011 Linaro Ltd.
> + * Copyright 2012 Genesi USA, Inc.
> + *
> + * 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 = "Genesi Efika MX (Smarttop)";
> +	compatible = "genesi,imx51-efikamx", "fsl,imx51";
> +
> +	memory {
> +		reg = <0x90000000 0x20000000>;
> +	};
> +
> +	soc {
> +		aips at 70000000 {
> +			spba at 70000000 {
> +				esdhc at 70004000 {

The pinctrl_provide_dummies() in imx51_dt_init() is something to be
removed.  Then any driver calling pinctrl API will require pinctrl
set up for the device here.  So please have the pinctrl setup for
those devices. 

> +					cd-gpios = <&gpio1 0 0>;
> +					wp-gpios = <&gpio1 1 0>;
> +					status = "okay";
> +				};
> +
> +				ssi2: ssi at 70014000 {
> +				    fsl,mode = "i2s-slave";
> +				    status = "okay";
> +				};
> +
> +				ecspi at 70010000 {
> +					fsl,spi-num-chipselects = <2>;
> +					cs-gpios = <&gpio4 24 0>, <&gpio4 25 0>;
> +					status = "okay";
> +
> +					pmic: mc13892 at 0 {
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +						compatible = "fsl,mc13892";
> +						spi-max-frequency = <6000000>;
> +						reg = <0>;
> +						interrupt-parent = <&gpio1>;
> +						interrupts = <6 0x4>;
> +						fsl,mc13xxx-uses-rtc;
> +
> +						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 = <3150000>;
> +								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>;
> +								regulator-boot-on;
> +							};
> +
> +							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 = <3150000>;
> +							};
> +
> +							vgen2_reg: vgen2 {
> +								regulator-min-microvolt = <3150000>;
> +								regulator-max-microvolt = <3150000>;
> +								regulator-always-on;
> +							};
> +
> +							vgen3_reg: vgen3 {
> +								regulator-min-microvolt = <1800000>;
> +								regulator-max-microvolt = <2900000>;
> +								regulator-always-on;
> +							};
> +						};
> +					};
> +
> +					flash: sst25vf032b at 1 {
> +						#address-cells = <1>;
> +						#size-cells = <1>;
> +						compatible = "sst,sst25vf032b";
> +						spi-max-frequency = <25000000>;
> +						reg = <1>;
> +
> +						partition at 0 {
> +							label = "firmware";
> +							reg = <0x0 0x200000>;
> +						};
> +
> +						partition at 200000 {
> +							label = "user";
> +							reg = <0x200000 0x200000>;
> +						};
> +					};
> +				};
> +			};
> +
> +			wdog at 73f98000 {
> +				status = "okay";
> +			};

Remove it.  I have queued a patch to enable wdog in <soc>.dtsi
by default.

> +
> +			iomuxc at 73fa8000 {
> +				compatible = "fsl,imx51-iomuxc";
> +				reg = <0x73fa8000 0x4000>;
> +			};
> +
> +			uart1: serial at 73fbc000 {
> +				fsl,uart-has-rtscts;
> +				status = "okay";
> +			};
> +
> +		};
> +
> +		aips at 80000000 {
> +			sdma at 83fb0000 {
> +				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
> +			};

Remove it.  I have seen a patch to move this name into <soc>.dtsi
as default.

> +
> +			i2c at 83fc4000 {
> +				status = "okay";
> +
> +				codec: sgtl5000 at 0a {
> +					compatible = "fsl,sgtl5000";
> +					reg = <0x0a>;
> +					clock-frequency = <12288000>;
> +					VDDA-supply = <&vdig_reg>;
> +					VDDIO-supply = <&vvideo_reg>;
> +				};
> +			};
> +
> +			audmux at 83fd0000 {
> +				status = "okay";
> +			};
> +		};
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		power {
> +			label = "Power Button";
> +			gpios = <&gpio2 31 0>;
> +			linux,code = <116>; /* KEY_POWER */
> +			gpio-key,wakeup;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		red {
> +			label = "red";
> +			gpios = <&gpio3 13>;
> +			linux,default-trigger = "ide-disk";
> +		};
> +
> +		green {
> +			label = "green";
> +			gpios = <&gpio3 14>;
> +			linux,default-trigger = "default-on";
> +		};
> +
> +		blue {
> +			label = "blue";
> +			gpios = <&gpio3 15>;
> +			linux,default-trigger = "mmc0";
> +		};
> +	};
> +
> +	sound {
> +		compatible = "fsl,imx-audio-sgtl5000";
> +		model = "efikamx-sgtl5000";
> +		ssi-controller = <&ssi2>;
> +		audio-routing =
> +			"MIC_IN", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"Ext Spk", "LINE_OUT";
> +		audio-codec = <&codec>;
> +		mux-int-port = <2>;
> +		mux-ext-port = <3>;
> +	};
> +};
> diff --git a/arch/arm/mach-imx/Makefile.boot b/arch/arm/mach-imx/Makefile.boot
> index 05541cf..3ed7c9d 100644
> --- a/arch/arm/mach-imx/Makefile.boot
> +++ b/arch/arm/mach-imx/Makefile.boot
> @@ -38,7 +38,7 @@ zreladdr-$(CONFIG_SOC_IMX6Q)	+= 0x10008000
>  params_phys-$(CONFIG_SOC_IMX6Q)	:= 0x10000100
>  initrd_phys-$(CONFIG_SOC_IMX6Q)	:= 0x10800000
>  
> -dtb-$(CONFIG_MACH_IMX51_DT) += imx51-babbage.dtb
> +dtb-$(CONFIG_MACH_IMX51_DT) += imx51-babbage.dtb imx51-efikamx.dtb

Please have the new entry on the new line like dtb-$(CONFIG_SOC_IMX6Q).
Yes, we will change dtb-$(CONFIG_MACH_IMX53_DT).

>  dtb-$(CONFIG_MACH_IMX53_DT) += imx53-ard.dtb imx53-evk.dtb \
>  			       imx53-qsb.dtb imx53-smd.dtb
>  dtb-$(CONFIG_SOC_IMX6Q)	+= imx6q-arm2.dtb \
> -- 
> 1.7.9.5
> 

-- 
Regards,
Shawn




More information about the linux-arm-kernel mailing list