diff -urN a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi --- a/arch/arm/boot/dts/imx23.dtsi 2013-09-23 16:41:09.000000000 -0600 +++ b/arch/arm/boot/dts/imx23.dtsi 2013-09-28 20:12:40.454968654 -0600 @@ -306,6 +306,39 @@ fsl,voltage = <1>; fsl,pull-up = <1>; }; + + i2c0_pins_a: i2c0@0 { + reg = <0>; + fsl,pinmux-ids = < + 0x01e0 /* MX23_PAD_I2C_SCL__I2C_SCL */ + 0x01f0 /* MX23_PAD_I2C_SDA__I2C_SDA */ + >; + fsl,drive-strength = <1>; + fsl,voltage = <1>; + fsl,pull-up = <1>; + }; + + i2c1_pins_a: i2c1@0 { + reg = <0>; + fsl,pinmux-ids = < + 0x1171 /* MX23_PAD_LCD_ENABLE__I2C_SCL */ + 0x1181 /* MX23_PAD_LCD_HSYNC__I2C_SDA */ + >; + fsl,drive-strength = <1>; + fsl,voltage = <1>; + fsl,pull-up = <1>; + }; + + i2c2_pins_a: i2c2@0 { + reg = <0>; + fsl,pinmux-ids = < + 0x2031 /* MX23_PAD_SSP1_DATA1__I2C_SCL */ + 0x2041 /* MX23_PAD_SSP1_DATA2__I2C_SDA */ + >; + fsl,drive-strength = <1>; + fsl,voltage = <1>; + fsl,pull-up = <1>; + }; }; digctl@8001c000 { @@ -377,7 +410,7 @@ reg = <0x80038000 0x2000>; status = "disabled"; }; - }; + }; apbx@80040000 { compatible = "simple-bus"; @@ -439,8 +472,14 @@ status = "disabled"; }; - i2c@80058000 { + i2c0: i2c@80058000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx23-i2c"; reg = <0x80058000 0x2000>; + interrupts = <27 26>; + clock-frequency = <100000>; + fsl,i2c-dma-channel = <3>; dmas = <&dma_apbx 3>; dma-names = "rx-tx"; status = "disabled"; diff -urN a/arch/arm/boot/dts/imx23-olinuxino.dts b/arch/arm/boot/dts/imx23-olinuxino.dts --- a/arch/arm/boot/dts/imx23-olinuxino.dts 2013-09-23 16:41:09.000000000 -0600 +++ b/arch/arm/boot/dts/imx23-olinuxino.dts 2013-09-28 20:15:15.654269506 -0600 @@ -29,6 +29,7 @@ pinctrl-names = "default"; pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>; bus-width = <4>; + non-removable; broken-cd; status = "okay"; }; @@ -73,6 +74,25 @@ status = "okay"; }; + i2c0: i2c@80058000 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins_a>; + status = "okay"; + + sgtl5000: codec@0a { + compatible = "fsl,sgtl5000"; + reg = <0x0a>; + VDDA-supply = <®_3p3v>; + VDDIO-supply = <®_3p3v>; + }; + + at24@51 { + compatible = "at24,24c32"; + pagesize = <32>; + reg = <0x51>; + }; + }; + duart: serial@80070000 { pinctrl-names = "default"; pinctrl-0 = <&duart_pins_a>; @@ -101,6 +121,14 @@ regulators { compatible = "simple-bus"; + reg_3p3v: 3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + reg_usb0_vbus: usb0_vbus { compatible = "regulator-fixed"; regulator-name = "usb0_vbus"; @@ -112,6 +140,14 @@ }; }; + sound { + compatible = "fsl,imx28-evk-sgtl5000", + "fsl,mxs-audio-sgtl5000"; + model = "imx28-evk-sgtl5000"; + saif-controllers = <&saif0 &saif1>; + audio-codec = <&sgtl5000>; + }; + leds { compatible = "gpio-leds"; pinctrl-names = "default"; diff -urN a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c --- a/drivers/mmc/host/mxs-mmc.c 2013-09-23 16:41:09.000000000 -0600 +++ b/drivers/mmc/host/mxs-mmc.c 2013-09-28 20:12:40.454968654 -0600 @@ -94,6 +94,9 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc) { + if (mmc->caps & MMC_CAP_NONREMOVABLE) + return 1; + struct mxs_mmc_host *host = mmc_priv(mmc); struct mxs_ssp *ssp = &host->ssp; @@ -663,6 +666,9 @@ host->cd_inverted = of_property_read_bool(np, "cd-inverted"); + if (of_find_property(np, "non-removable", NULL)) + mmc->caps |= MMC_CAP_NONREMOVABLE; + mmc->f_min = 400000; mmc->f_max = 288000000; mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;