Patchwork [U-Boot,V5,02/10] EXYNOS5: FDT: Add DWMMC device node data

login
register
mail settings
Submitter Amar
Date Jan. 21, 2013, 11:43 a.m.
Message ID <1358768638-14187-3-git-send-email-amarendra.xt@samsung.com>
Download mbox | patch
Permalink /patch/214093/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Amar - Jan. 21, 2013, 11:43 a.m.
This patch adds DWMMC device node data for exynos5.
This patch also adds binding file for DWMMC device node.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Signed-off-by: Amar <amarendra.xt@samsung.com>
---
Changes since V1:
        1)Added binding file for DWMMC device node at the location
        "doc/device-tree-bindings/exynos/dwmmc.txt".
        2)Removed the propname 'index' from device node.
        3)Prefixed the vendor name 'samsung' before propname in device node.

Changes since V2:
        1)Updation of commit message and resubmition of proper patch set.

Changes since V3:
        No change.

Changes since V4:
        1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with more
        information regarding the property 'samsung,timing'.
        2)Replaced the name 'dwmmc' with 'mmc'.

 arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
 board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
 doc/device-tree-bindings/exynos/dwmmc.txt | 49 +++++++++++++++++++++++++++++++
 3 files changed, 102 insertions(+)
 create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
Jaehoon Chung - Jan. 22, 2013, 2:40 a.m.
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>

On 01/21/2013 08:43 PM, Amar wrote:
> This patch adds DWMMC device node data for exynos5.
> This patch also adds binding file for DWMMC device node.
> 
> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
> Signed-off-by: Amar <amarendra.xt@samsung.com>
> ---
> Changes since V1:
>         1)Added binding file for DWMMC device node at the location
>         "doc/device-tree-bindings/exynos/dwmmc.txt".
>         2)Removed the propname 'index' from device node.
>         3)Prefixed the vendor name 'samsung' before propname in device node.
> 
> Changes since V2:
>         1)Updation of commit message and resubmition of proper patch set.
> 
> Changes since V3:
>         No change.
> 
> Changes since V4:
>         1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with more
>         information regarding the property 'samsung,timing'.
>         2)Replaced the name 'dwmmc' with 'mmc'.
> 
>  arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
>  board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
>  doc/device-tree-bindings/exynos/dwmmc.txt | 49 +++++++++++++++++++++++++++++++
>  3 files changed, 102 insertions(+)
>  create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
> 
> diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
> index ed8c8dd..6c08eb7 100644
> --- a/arch/arm/dts/exynos5250.dtsi
> +++ b/arch/arm/dts/exynos5250.dtsi
> @@ -151,4 +151,35 @@
>  		};
>  	};
>  
> +	mmc@12200000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "samsung,exynos5250-dwmmc";
> +		reg = <0x12200000 0x1000>;
> +		interrupts = <0 75 0>;
> +	};
> +
> +	mmc@12210000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "samsung,exynos5250-dwmmc";
> +		reg = <0x12210000 0x1000>;
> +		interrupts = <0 76 0>;
> +	};
> +
> +	mmc@12220000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "samsung,exynos5250-dwmmc";
> +		reg = <0x12220000 0x1000>;
> +		interrupts = <0 77 0>;
> +	};
> +
> +	mmc@12230000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "samsung,exynos5250-dwmmc";
> +		reg = <0x12230000 0x1000>;
> +		interrupts = <0 78 0>;
> +	};
>  };
> diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/board/samsung/dts/exynos5250-smdk5250.dts
> index cbfab6f..1d3e42b 100644
> --- a/board/samsung/dts/exynos5250-smdk5250.dts
> +++ b/board/samsung/dts/exynos5250-smdk5250.dts
> @@ -30,6 +30,10 @@
>  		spi2 = "/spi@12d40000";
>  		spi3 = "/spi@131a0000";
>  		spi4 = "/spi@131b0000";
> +		mmc0 = "/mmc@12200000";
> +		mmc1 = "/mmc@12210000";
> +		mmc2 = "/mmc@12220000";
> +		mmc3 = "/mmc@12230000";
>  	};
>  
>  	sromc@12250000 {
> @@ -66,4 +70,22 @@
>  			compatible = "maxim,max77686_pmic";
>  		};
>  	};
> +
> +	mmc@12200000 {
> +		samsung,bus-width = <8>;
> +		samsung,timing = <1 3 3>;
> +	};
> +
> +	mmc@12210000 {
> +		status = "disabled";
> +	};
> +
> +	mmc@12220000 {
> +		samsung,bus-width = <4>;
> +		samsung,timing = <1 2 3>;
> +	};
> +
> +	mmc@12230000 {
> +		status = "disabled";
> +	};
>  };
> diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt b/doc/device-tree-bindings/exynos/dwmmc.txt
> new file mode 100644
> index 0000000..0054ace
> --- /dev/null
> +++ b/doc/device-tree-bindings/exynos/dwmmc.txt
> @@ -0,0 +1,49 @@
> +* Exynos 5250 DWC_mobile_storage
> +
> +The Exynos 5250 provides DWC_mobile_storage interface which supports
> +. Embedded Multimedia Cards (EMMC-version 4.5)
> +. Secure Digital memory (SD mem-version 2.0)
> +. Secure Digital I/O (SDIO-version 3.0)
> +. Consumer Electronics Advanced Transport Architecture (CE-ATA-version 1.1)
> +
> +The Exynos 5250 DWC_mobile_storage provides four channels.
> +SOC specific and Board specific properties are channel specific.
> +
> +Required SoC Specific Properties:
> +
> +- compatible: should be
> +	- samsung,exynos5250-dwmmc: for exynos5250 platforms
> +
> +- reg: physical base address of the controller and length of memory mapped
> +	region.
> +
> +- interrupts: The interrupt number to the cpu.
> +
> +Required Board Specific Properties:
> +
> +- #address-cells: should be 1.
> +- #size-cells: should be 0.
> +- samsung,bus-width: The width of the bus used to interface the devices
> +	supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
> +	. Typically the bus width is 4 or 8.
> +- samsung,timing: The timing values to be written into the
> +	Drv/sample clock selection register of corresponding channel.
> +	. It is comprised of 3 values corresponding to the 3 fileds
> +	  'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL register.
> +	. SelClk_sample: Select sample clock among 8 shifted clocks.
> +	. SelClk_drv: Select drv clock among 8 shifted clocks.
> +	. DIVRATIO: Clock Divide ratio select.
> +	. The above 3 values are used by the clock phase shifter.
> +
> +Example:
> +
> +mmc@12200000 {
> +	samsung,bus-width = <8>;
> +	samsung,timing = <1 3 3>;
> +}
> +In the above example,
> +	. The bus width is 8
> +	. Timing is comprised of 3 values as explained below
> +		1 - SelClk_sample
> +		3 - SelClk_drv
> +		3 - DIVRATIO
>
Simon Glass - Jan. 23, 2013, 12:09 a.m.
Hi Amar,

On Mon, Jan 21, 2013 at 3:43 AM, Amar <amarendra.xt@samsung.com> wrote:
> This patch adds DWMMC device node data for exynos5.
> This patch also adds binding file for DWMMC device node.
>
> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
> Signed-off-by: Amar <amarendra.xt@samsung.com>

Acked-by: Simon Glass <sjg@chromium.org>

Can I suggest in a later patch you add a removable flag, so we can
mark devices which cannot be removed (and can be assumed to be
present). I believe that there is some overhead involved in detecting
an MMC (we have to try SD first, and fail).

> ---
> Changes since V1:
>         1)Added binding file for DWMMC device node at the location
>         "doc/device-tree-bindings/exynos/dwmmc.txt".
>         2)Removed the propname 'index' from device node.
>         3)Prefixed the vendor name 'samsung' before propname in device node.
>
> Changes since V2:
>         1)Updation of commit message and resubmition of proper patch set.
>
> Changes since V3:
>         No change.
>
> Changes since V4:
>         1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with more
>         information regarding the property 'samsung,timing'.
>         2)Replaced the name 'dwmmc' with 'mmc'.
>
>  arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
>  board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
>  doc/device-tree-bindings/exynos/dwmmc.txt | 49 +++++++++++++++++++++++++++++++
>  3 files changed, 102 insertions(+)
>  create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
>
> diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
> index ed8c8dd..6c08eb7 100644
> --- a/arch/arm/dts/exynos5250.dtsi
> +++ b/arch/arm/dts/exynos5250.dtsi
> @@ -151,4 +151,35 @@
>                 };
>         };
>
> +       mmc@12200000 {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               compatible = "samsung,exynos5250-dwmmc";
> +               reg = <0x12200000 0x1000>;
> +               interrupts = <0 75 0>;
> +       };
> +
> +       mmc@12210000 {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               compatible = "samsung,exynos5250-dwmmc";
> +               reg = <0x12210000 0x1000>;
> +               interrupts = <0 76 0>;
> +       };
> +
> +       mmc@12220000 {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               compatible = "samsung,exynos5250-dwmmc";
> +               reg = <0x12220000 0x1000>;
> +               interrupts = <0 77 0>;
> +       };
> +
> +       mmc@12230000 {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               compatible = "samsung,exynos5250-dwmmc";
> +               reg = <0x12230000 0x1000>;
> +               interrupts = <0 78 0>;
> +       };
>  };
> diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/board/samsung/dts/exynos5250-smdk5250.dts
> index cbfab6f..1d3e42b 100644
> --- a/board/samsung/dts/exynos5250-smdk5250.dts
> +++ b/board/samsung/dts/exynos5250-smdk5250.dts
> @@ -30,6 +30,10 @@
>                 spi2 = "/spi@12d40000";
>                 spi3 = "/spi@131a0000";
>                 spi4 = "/spi@131b0000";
> +               mmc0 = "/mmc@12200000";
> +               mmc1 = "/mmc@12210000";
> +               mmc2 = "/mmc@12220000";
> +               mmc3 = "/mmc@12230000";
>         };
>
>         sromc@12250000 {
> @@ -66,4 +70,22 @@
>                         compatible = "maxim,max77686_pmic";
>                 };
>         };
> +
> +       mmc@12200000 {
> +               samsung,bus-width = <8>;
> +               samsung,timing = <1 3 3>;
> +       };
> +
> +       mmc@12210000 {
> +               status = "disabled";
> +       };
> +
> +       mmc@12220000 {
> +               samsung,bus-width = <4>;
> +               samsung,timing = <1 2 3>;
> +       };
> +
> +       mmc@12230000 {
> +               status = "disabled";
> +       };
>  };
> diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt b/doc/device-tree-bindings/exynos/dwmmc.txt
> new file mode 100644
> index 0000000..0054ace
> --- /dev/null
> +++ b/doc/device-tree-bindings/exynos/dwmmc.txt
> @@ -0,0 +1,49 @@
> +* Exynos 5250 DWC_mobile_storage
> +
> +The Exynos 5250 provides DWC_mobile_storage interface which supports
> +. Embedded Multimedia Cards (EMMC-version 4.5)
> +. Secure Digital memory (SD mem-version 2.0)
> +. Secure Digital I/O (SDIO-version 3.0)
> +. Consumer Electronics Advanced Transport Architecture (CE-ATA-version 1.1)
> +
> +The Exynos 5250 DWC_mobile_storage provides four channels.
> +SOC specific and Board specific properties are channel specific.
> +
> +Required SoC Specific Properties:
> +
> +- compatible: should be
> +       - samsung,exynos5250-dwmmc: for exynos5250 platforms
> +
> +- reg: physical base address of the controller and length of memory mapped
> +       region.
> +
> +- interrupts: The interrupt number to the cpu.
> +
> +Required Board Specific Properties:
> +
> +- #address-cells: should be 1.
> +- #size-cells: should be 0.
> +- samsung,bus-width: The width of the bus used to interface the devices
> +       supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
> +       . Typically the bus width is 4 or 8.
> +- samsung,timing: The timing values to be written into the
> +       Drv/sample clock selection register of corresponding channel.
> +       . It is comprised of 3 values corresponding to the 3 fileds
> +         'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL register.
> +       . SelClk_sample: Select sample clock among 8 shifted clocks.
> +       . SelClk_drv: Select drv clock among 8 shifted clocks.
> +       . DIVRATIO: Clock Divide ratio select.
> +       . The above 3 values are used by the clock phase shifter.
> +
> +Example:
> +
> +mmc@12200000 {
> +       samsung,bus-width = <8>;
> +       samsung,timing = <1 3 3>;
> +}
> +In the above example,
> +       . The bus width is 8
> +       . Timing is comprised of 3 values as explained below
> +               1 - SelClk_sample
> +               3 - SelClk_drv
> +               3 - DIVRATIO
> --
> 1.8.0
>
Amarendra Reddy - Jan. 28, 2013, 9:20 a.m.
Hi Simon,

You mean to add "removable" flag in device node ?
Are you referring to the overhead involved during MMC boot, and a SD card
is not present on the board ?
Can you please elaborate on the above.

Thanks & Regards
Amarendra Reddy

On 23 January 2013 05:39, Simon Glass <sjg@chromium.org> wrote:

> Hi Amar,
>
> On Mon, Jan 21, 2013 at 3:43 AM, Amar <amarendra.xt@samsung.com> wrote:
> > This patch adds DWMMC device node data for exynos5.
> > This patch also adds binding file for DWMMC device node.
> >
> > Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
> > Signed-off-by: Amar <amarendra.xt@samsung.com>
>
> Acked-by: Simon Glass <sjg@chromium.org>
>
> Can I suggest in a later patch you add a removable flag, so we can
> mark devices which cannot be removed (and can be assumed to be
> present). I believe that there is some overhead involved in detecting
> an MMC (we have to try SD first, and fail).
>
> > ---
> > Changes since V1:
> >         1)Added binding file for DWMMC device node at the location
> >         "doc/device-tree-bindings/exynos/dwmmc.txt".
> >         2)Removed the propname 'index' from device node.
> >         3)Prefixed the vendor name 'samsung' before propname in device
> node.
> >
> > Changes since V2:
> >         1)Updation of commit message and resubmition of proper patch set.
> >
> > Changes since V3:
> >         No change.
> >
> > Changes since V4:
> >         1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with more
> >         information regarding the property 'samsung,timing'.
> >         2)Replaced the name 'dwmmc' with 'mmc'.
> >
> >  arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
> >  board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
> >  doc/device-tree-bindings/exynos/dwmmc.txt | 49
> +++++++++++++++++++++++++++++++
> >  3 files changed, 102 insertions(+)
> >  create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
> >
> > diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
> > index ed8c8dd..6c08eb7 100644
> > --- a/arch/arm/dts/exynos5250.dtsi
> > +++ b/arch/arm/dts/exynos5250.dtsi
> > @@ -151,4 +151,35 @@
> >                 };
> >         };
> >
> > +       mmc@12200000 {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +               compatible = "samsung,exynos5250-dwmmc";
> > +               reg = <0x12200000 0x1000>;
> > +               interrupts = <0 75 0>;
> > +       };
> > +
> > +       mmc@12210000 {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +               compatible = "samsung,exynos5250-dwmmc";
> > +               reg = <0x12210000 0x1000>;
> > +               interrupts = <0 76 0>;
> > +       };
> > +
> > +       mmc@12220000 {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +               compatible = "samsung,exynos5250-dwmmc";
> > +               reg = <0x12220000 0x1000>;
> > +               interrupts = <0 77 0>;
> > +       };
> > +
> > +       mmc@12230000 {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +               compatible = "samsung,exynos5250-dwmmc";
> > +               reg = <0x12230000 0x1000>;
> > +               interrupts = <0 78 0>;
> > +       };
> >  };
> > diff --git a/board/samsung/dts/exynos5250-smdk5250.dts
> b/board/samsung/dts/exynos5250-smdk5250.dts
> > index cbfab6f..1d3e42b 100644
> > --- a/board/samsung/dts/exynos5250-smdk5250.dts
> > +++ b/board/samsung/dts/exynos5250-smdk5250.dts
> > @@ -30,6 +30,10 @@
> >                 spi2 = "/spi@12d40000";
> >                 spi3 = "/spi@131a0000";
> >                 spi4 = "/spi@131b0000";
> > +               mmc0 = "/mmc@12200000";
> > +               mmc1 = "/mmc@12210000";
> > +               mmc2 = "/mmc@12220000";
> > +               mmc3 = "/mmc@12230000";
> >         };
> >
> >         sromc@12250000 {
> > @@ -66,4 +70,22 @@
> >                         compatible = "maxim,max77686_pmic";
> >                 };
> >         };
> > +
> > +       mmc@12200000 {
> > +               samsung,bus-width = <8>;
> > +               samsung,timing = <1 3 3>;
> > +       };
> > +
> > +       mmc@12210000 {
> > +               status = "disabled";
> > +       };
> > +
> > +       mmc@12220000 {
> > +               samsung,bus-width = <4>;
> > +               samsung,timing = <1 2 3>;
> > +       };
> > +
> > +       mmc@12230000 {
> > +               status = "disabled";
> > +       };
> >  };
> > diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt
> b/doc/device-tree-bindings/exynos/dwmmc.txt
> > new file mode 100644
> > index 0000000..0054ace
> > --- /dev/null
> > +++ b/doc/device-tree-bindings/exynos/dwmmc.txt
> > @@ -0,0 +1,49 @@
> > +* Exynos 5250 DWC_mobile_storage
> > +
> > +The Exynos 5250 provides DWC_mobile_storage interface which supports
> > +. Embedded Multimedia Cards (EMMC-version 4.5)
> > +. Secure Digital memory (SD mem-version 2.0)
> > +. Secure Digital I/O (SDIO-version 3.0)
> > +. Consumer Electronics Advanced Transport Architecture (CE-ATA-version
> 1.1)
> > +
> > +The Exynos 5250 DWC_mobile_storage provides four channels.
> > +SOC specific and Board specific properties are channel specific.
> > +
> > +Required SoC Specific Properties:
> > +
> > +- compatible: should be
> > +       - samsung,exynos5250-dwmmc: for exynos5250 platforms
> > +
> > +- reg: physical base address of the controller and length of memory
> mapped
> > +       region.
> > +
> > +- interrupts: The interrupt number to the cpu.
> > +
> > +Required Board Specific Properties:
> > +
> > +- #address-cells: should be 1.
> > +- #size-cells: should be 0.
> > +- samsung,bus-width: The width of the bus used to interface the devices
> > +       supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
> > +       . Typically the bus width is 4 or 8.
> > +- samsung,timing: The timing values to be written into the
> > +       Drv/sample clock selection register of corresponding channel.
> > +       . It is comprised of 3 values corresponding to the 3 fileds
> > +         'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL
> register.
> > +       . SelClk_sample: Select sample clock among 8 shifted clocks.
> > +       . SelClk_drv: Select drv clock among 8 shifted clocks.
> > +       . DIVRATIO: Clock Divide ratio select.
> > +       . The above 3 values are used by the clock phase shifter.
> > +
> > +Example:
> > +
> > +mmc@12200000 {
> > +       samsung,bus-width = <8>;
> > +       samsung,timing = <1 3 3>;
> > +}
> > +In the above example,
> > +       . The bus width is 8
> > +       . Timing is comprised of 3 values as explained below
> > +               1 - SelClk_sample
> > +               3 - SelClk_drv
> > +               3 - DIVRATIO
> > --
> > 1.8.0
> >
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Simon Glass - Feb. 8, 2013, 5:03 p.m.
Hi Amarendra,

On Mon, Jan 28, 2013 at 1:20 AM, Amarendra Reddy
<amar.lavanuru@gmail.com> wrote:
> Hi Simon,
>
> You mean to add "removable" flag in device node ?

Yes

> Are you referring to the overhead involved during MMC boot, and a SD card is
> not present on the board ?
> Can you please elaborate on the above.

From my investigation of the mmc code some months back I found that
for the eMMC case we are probing for an SD card, and when that fails,
trying eMMC. If we can specify which it is (which we can in the case
of a soldered-down device) then we might save that wasted time.

Regards,
Simon

>
> Thanks & Regards
> Amarendra Reddy
>
> On 23 January 2013 05:39, Simon Glass <sjg@chromium.org> wrote:
>>
>> Hi Amar,
>>
>> On Mon, Jan 21, 2013 at 3:43 AM, Amar <amarendra.xt@samsung.com> wrote:
>> > This patch adds DWMMC device node data for exynos5.
>> > This patch also adds binding file for DWMMC device node.
>> >
>> > Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
>> > Signed-off-by: Amar <amarendra.xt@samsung.com>
>>
>> Acked-by: Simon Glass <sjg@chromium.org>
>>
>> Can I suggest in a later patch you add a removable flag, so we can
>> mark devices which cannot be removed (and can be assumed to be
>> present). I believe that there is some overhead involved in detecting
>> an MMC (we have to try SD first, and fail).
>>
>> > ---
>> > Changes since V1:
>> >         1)Added binding file for DWMMC device node at the location
>> >         "doc/device-tree-bindings/exynos/dwmmc.txt".
>> >         2)Removed the propname 'index' from device node.
>> >         3)Prefixed the vendor name 'samsung' before propname in device
>> > node.
>> >
>> > Changes since V2:
>> >         1)Updation of commit message and resubmition of proper patch
>> > set.
>> >
>> > Changes since V3:
>> >         No change.
>> >
>> > Changes since V4:
>> >         1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with
>> > more
>> >         information regarding the property 'samsung,timing'.
>> >         2)Replaced the name 'dwmmc' with 'mmc'.
>> >
>> >  arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
>> >  board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
>> >  doc/device-tree-bindings/exynos/dwmmc.txt | 49
>> > +++++++++++++++++++++++++++++++
>> >  3 files changed, 102 insertions(+)
>> >  create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
>> >
>> > diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
>> > index ed8c8dd..6c08eb7 100644
>> > --- a/arch/arm/dts/exynos5250.dtsi
>> > +++ b/arch/arm/dts/exynos5250.dtsi
>> > @@ -151,4 +151,35 @@
>> >                 };
>> >         };
>> >
>> > +       mmc@12200000 {
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               compatible = "samsung,exynos5250-dwmmc";
>> > +               reg = <0x12200000 0x1000>;
>> > +               interrupts = <0 75 0>;
>> > +       };
>> > +
>> > +       mmc@12210000 {
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               compatible = "samsung,exynos5250-dwmmc";
>> > +               reg = <0x12210000 0x1000>;
>> > +               interrupts = <0 76 0>;
>> > +       };
>> > +
>> > +       mmc@12220000 {
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               compatible = "samsung,exynos5250-dwmmc";
>> > +               reg = <0x12220000 0x1000>;
>> > +               interrupts = <0 77 0>;
>> > +       };
>> > +
>> > +       mmc@12230000 {
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               compatible = "samsung,exynos5250-dwmmc";
>> > +               reg = <0x12230000 0x1000>;
>> > +               interrupts = <0 78 0>;
>> > +       };
>> >  };
>> > diff --git a/board/samsung/dts/exynos5250-smdk5250.dts
>> > b/board/samsung/dts/exynos5250-smdk5250.dts
>> > index cbfab6f..1d3e42b 100644
>> > --- a/board/samsung/dts/exynos5250-smdk5250.dts
>> > +++ b/board/samsung/dts/exynos5250-smdk5250.dts
>> > @@ -30,6 +30,10 @@
>> >                 spi2 = "/spi@12d40000";
>> >                 spi3 = "/spi@131a0000";
>> >                 spi4 = "/spi@131b0000";
>> > +               mmc0 = "/mmc@12200000";
>> > +               mmc1 = "/mmc@12210000";
>> > +               mmc2 = "/mmc@12220000";
>> > +               mmc3 = "/mmc@12230000";
>> >         };
>> >
>> >         sromc@12250000 {
>> > @@ -66,4 +70,22 @@
>> >                         compatible = "maxim,max77686_pmic";
>> >                 };
>> >         };
>> > +
>> > +       mmc@12200000 {
>> > +               samsung,bus-width = <8>;
>> > +               samsung,timing = <1 3 3>;
>> > +       };
>> > +
>> > +       mmc@12210000 {
>> > +               status = "disabled";
>> > +       };
>> > +
>> > +       mmc@12220000 {
>> > +               samsung,bus-width = <4>;
>> > +               samsung,timing = <1 2 3>;
>> > +       };
>> > +
>> > +       mmc@12230000 {
>> > +               status = "disabled";
>> > +       };
>> >  };
>> > diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt
>> > b/doc/device-tree-bindings/exynos/dwmmc.txt
>> > new file mode 100644
>> > index 0000000..0054ace
>> > --- /dev/null
>> > +++ b/doc/device-tree-bindings/exynos/dwmmc.txt
>> > @@ -0,0 +1,49 @@
>> > +* Exynos 5250 DWC_mobile_storage
>> > +
>> > +The Exynos 5250 provides DWC_mobile_storage interface which supports
>> > +. Embedded Multimedia Cards (EMMC-version 4.5)
>> > +. Secure Digital memory (SD mem-version 2.0)
>> > +. Secure Digital I/O (SDIO-version 3.0)
>> > +. Consumer Electronics Advanced Transport Architecture (CE-ATA-version
>> > 1.1)
>> > +
>> > +The Exynos 5250 DWC_mobile_storage provides four channels.
>> > +SOC specific and Board specific properties are channel specific.
>> > +
>> > +Required SoC Specific Properties:
>> > +
>> > +- compatible: should be
>> > +       - samsung,exynos5250-dwmmc: for exynos5250 platforms
>> > +
>> > +- reg: physical base address of the controller and length of memory
>> > mapped
>> > +       region.
>> > +
>> > +- interrupts: The interrupt number to the cpu.
>> > +
>> > +Required Board Specific Properties:
>> > +
>> > +- #address-cells: should be 1.
>> > +- #size-cells: should be 0.
>> > +- samsung,bus-width: The width of the bus used to interface the devices
>> > +       supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
>> > +       . Typically the bus width is 4 or 8.
>> > +- samsung,timing: The timing values to be written into the
>> > +       Drv/sample clock selection register of corresponding channel.
>> > +       . It is comprised of 3 values corresponding to the 3 fileds
>> > +         'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL
>> > register.
>> > +       . SelClk_sample: Select sample clock among 8 shifted clocks.
>> > +       . SelClk_drv: Select drv clock among 8 shifted clocks.
>> > +       . DIVRATIO: Clock Divide ratio select.
>> > +       . The above 3 values are used by the clock phase shifter.
>> > +
>> > +Example:
>> > +
>> > +mmc@12200000 {
>> > +       samsung,bus-width = <8>;
>> > +       samsung,timing = <1 3 3>;
>> > +}
>> > +In the above example,
>> > +       . The bus width is 8
>> > +       . Timing is comprised of 3 values as explained below
>> > +               1 - SelClk_sample
>> > +               3 - SelClk_drv
>> > +               3 - DIVRATIO
>> > --
>> > 1.8.0
>> >
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>
>
Amarendra Reddy - Feb. 15, 2013, 6:19 a.m.
Hi Simon,

Please find my response below.

Thanks & Regards
Amarendra

On 8 February 2013 22:33, Simon Glass <sjg@chromium.org> wrote:

> Hi Amarendra,
>
> On Mon, Jan 28, 2013 at 1:20 AM, Amarendra Reddy
> <amar.lavanuru@gmail.com> wrote:
> > Hi Simon,
> >
> > You mean to add "removable" flag in device node ?
>
> Yes
>
> > Are you referring to the overhead involved during MMC boot, and a SD
> card is
> > not present on the board ?
> > Can you please elaborate on the above.
>
> From my investigation of the mmc code some months back I found that
> for the eMMC case we are probing for an SD card, and when that fails,
> trying eMMC. If we can specify which it is (which we can in the case
> of a soldered-down device) then we might save that wasted time.
>
> Regards,
> Simon
>
Ok, I will add the flag 'removable' to mmc device node.


>  >
> > Thanks & Regards
> > Amarendra Reddy
> >
> > On 23 January 2013 05:39, Simon Glass <sjg@chromium.org> wrote:
> >>
> >> Hi Amar,
> >>
> >> On Mon, Jan 21, 2013 at 3:43 AM, Amar <amarendra.xt@samsung.com> wrote:
> >> > This patch adds DWMMC device node data for exynos5.
> >> > This patch also adds binding file for DWMMC device node.
> >> >
> >> > Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
> >> > Signed-off-by: Amar <amarendra.xt@samsung.com>
> >>
> >> Acked-by: Simon Glass <sjg@chromium.org>
> >>
> >> Can I suggest in a later patch you add a removable flag, so we can
> >> mark devices which cannot be removed (and can be assumed to be
> >> present). I believe that there is some overhead involved in detecting
> >> an MMC (we have to try SD first, and fail).
> >>
> >> > ---
> >> > Changes since V1:
> >> >         1)Added binding file for DWMMC device node at the location
> >> >         "doc/device-tree-bindings/exynos/dwmmc.txt".
> >> >         2)Removed the propname 'index' from device node.
> >> >         3)Prefixed the vendor name 'samsung' before propname in device
> >> > node.
> >> >
> >> > Changes since V2:
> >> >         1)Updation of commit message and resubmition of proper patch
> >> > set.
> >> >
> >> > Changes since V3:
> >> >         No change.
> >> >
> >> > Changes since V4:
> >> >         1)Updated the doc/device-tree-bindings/exynos/dwmmc.txt with
> >> > more
> >> >         information regarding the property 'samsung,timing'.
> >> >         2)Replaced the name 'dwmmc' with 'mmc'.
> >> >
> >> >  arch/arm/dts/exynos5250.dtsi              | 31 +++++++++++++++++++
> >> >  board/samsung/dts/exynos5250-smdk5250.dts | 22 ++++++++++++++
> >> >  doc/device-tree-bindings/exynos/dwmmc.txt | 49
> >> > +++++++++++++++++++++++++++++++
> >> >  3 files changed, 102 insertions(+)
> >> >  create mode 100644 doc/device-tree-bindings/exynos/dwmmc.txt
> >> >
> >> > diff --git a/arch/arm/dts/exynos5250.dtsi
> b/arch/arm/dts/exynos5250.dtsi
> >> > index ed8c8dd..6c08eb7 100644
> >> > --- a/arch/arm/dts/exynos5250.dtsi
> >> > +++ b/arch/arm/dts/exynos5250.dtsi
> >> > @@ -151,4 +151,35 @@
> >> >                 };
> >> >         };
> >> >
> >> > +       mmc@12200000 {
> >> > +               #address-cells = <1>;
> >> > +               #size-cells = <0>;
> >> > +               compatible = "samsung,exynos5250-dwmmc";
> >> > +               reg = <0x12200000 0x1000>;
> >> > +               interrupts = <0 75 0>;
> >> > +       };
> >> > +
> >> > +       mmc@12210000 {
> >> > +               #address-cells = <1>;
> >> > +               #size-cells = <0>;
> >> > +               compatible = "samsung,exynos5250-dwmmc";
> >> > +               reg = <0x12210000 0x1000>;
> >> > +               interrupts = <0 76 0>;
> >> > +       };
> >> > +
> >> > +       mmc@12220000 {
> >> > +               #address-cells = <1>;
> >> > +               #size-cells = <0>;
> >> > +               compatible = "samsung,exynos5250-dwmmc";
> >> > +               reg = <0x12220000 0x1000>;
> >> > +               interrupts = <0 77 0>;
> >> > +       };
> >> > +
> >> > +       mmc@12230000 {
> >> > +               #address-cells = <1>;
> >> > +               #size-cells = <0>;
> >> > +               compatible = "samsung,exynos5250-dwmmc";
> >> > +               reg = <0x12230000 0x1000>;
> >> > +               interrupts = <0 78 0>;
> >> > +       };
> >> >  };
> >> > diff --git a/board/samsung/dts/exynos5250-smdk5250.dts
> >> > b/board/samsung/dts/exynos5250-smdk5250.dts
> >> > index cbfab6f..1d3e42b 100644
> >> > --- a/board/samsung/dts/exynos5250-smdk5250.dts
> >> > +++ b/board/samsung/dts/exynos5250-smdk5250.dts
> >> > @@ -30,6 +30,10 @@
> >> >                 spi2 = "/spi@12d40000";
> >> >                 spi3 = "/spi@131a0000";
> >> >                 spi4 = "/spi@131b0000";
> >> > +               mmc0 = "/mmc@12200000";
> >> > +               mmc1 = "/mmc@12210000";
> >> > +               mmc2 = "/mmc@12220000";
> >> > +               mmc3 = "/mmc@12230000";
> >> >         };
> >> >
> >> >         sromc@12250000 {
> >> > @@ -66,4 +70,22 @@
> >> >                         compatible = "maxim,max77686_pmic";
> >> >                 };
> >> >         };
> >> > +
> >> > +       mmc@12200000 {
> >> > +               samsung,bus-width = <8>;
> >> > +               samsung,timing = <1 3 3>;
> >> > +       };
> >> > +
> >> > +       mmc@12210000 {
> >> > +               status = "disabled";
> >> > +       };
> >> > +
> >> > +       mmc@12220000 {
> >> > +               samsung,bus-width = <4>;
> >> > +               samsung,timing = <1 2 3>;
> >> > +       };
> >> > +
> >> > +       mmc@12230000 {
> >> > +               status = "disabled";
> >> > +       };
> >> >  };
> >> > diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt
> >> > b/doc/device-tree-bindings/exynos/dwmmc.txt
> >> > new file mode 100644
> >> > index 0000000..0054ace
> >> > --- /dev/null
> >> > +++ b/doc/device-tree-bindings/exynos/dwmmc.txt
> >> > @@ -0,0 +1,49 @@
> >> > +* Exynos 5250 DWC_mobile_storage
> >> > +
> >> > +The Exynos 5250 provides DWC_mobile_storage interface which supports
> >> > +. Embedded Multimedia Cards (EMMC-version 4.5)
> >> > +. Secure Digital memory (SD mem-version 2.0)
> >> > +. Secure Digital I/O (SDIO-version 3.0)
> >> > +. Consumer Electronics Advanced Transport Architecture
> (CE-ATA-version
> >> > 1.1)
> >> > +
> >> > +The Exynos 5250 DWC_mobile_storage provides four channels.
> >> > +SOC specific and Board specific properties are channel specific.
> >> > +
> >> > +Required SoC Specific Properties:
> >> > +
> >> > +- compatible: should be
> >> > +       - samsung,exynos5250-dwmmc: for exynos5250 platforms
> >> > +
> >> > +- reg: physical base address of the controller and length of memory
> >> > mapped
> >> > +       region.
> >> > +
> >> > +- interrupts: The interrupt number to the cpu.
> >> > +
> >> > +Required Board Specific Properties:
> >> > +
> >> > +- #address-cells: should be 1.
> >> > +- #size-cells: should be 0.
> >> > +- samsung,bus-width: The width of the bus used to interface the
> devices
> >> > +       supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
> >> > +       . Typically the bus width is 4 or 8.
> >> > +- samsung,timing: The timing values to be written into the
> >> > +       Drv/sample clock selection register of corresponding channel.
> >> > +       . It is comprised of 3 values corresponding to the 3 fileds
> >> > +         'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL
> >> > register.
> >> > +       . SelClk_sample: Select sample clock among 8 shifted clocks.
> >> > +       . SelClk_drv: Select drv clock among 8 shifted clocks.
> >> > +       . DIVRATIO: Clock Divide ratio select.
> >> > +       . The above 3 values are used by the clock phase shifter.
> >> > +
> >> > +Example:
> >> > +
> >> > +mmc@12200000 {
> >> > +       samsung,bus-width = <8>;
> >> > +       samsung,timing = <1 3 3>;
> >> > +}
> >> > +In the above example,
> >> > +       . The bus width is 8
> >> > +       . Timing is comprised of 3 values as explained below
> >> > +               1 - SelClk_sample
> >> > +               3 - SelClk_drv
> >> > +               3 - DIVRATIO
> >> > --
> >> > 1.8.0
> >> >
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot@lists.denx.de
> >> http://lists.denx.de/mailman/listinfo/u-boot
> >
> >
>

Patch

diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
index ed8c8dd..6c08eb7 100644
--- a/arch/arm/dts/exynos5250.dtsi
+++ b/arch/arm/dts/exynos5250.dtsi
@@ -151,4 +151,35 @@ 
 		};
 	};
 
+	mmc@12200000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "samsung,exynos5250-dwmmc";
+		reg = <0x12200000 0x1000>;
+		interrupts = <0 75 0>;
+	};
+
+	mmc@12210000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "samsung,exynos5250-dwmmc";
+		reg = <0x12210000 0x1000>;
+		interrupts = <0 76 0>;
+	};
+
+	mmc@12220000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "samsung,exynos5250-dwmmc";
+		reg = <0x12220000 0x1000>;
+		interrupts = <0 77 0>;
+	};
+
+	mmc@12230000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "samsung,exynos5250-dwmmc";
+		reg = <0x12230000 0x1000>;
+		interrupts = <0 78 0>;
+	};
 };
diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/board/samsung/dts/exynos5250-smdk5250.dts
index cbfab6f..1d3e42b 100644
--- a/board/samsung/dts/exynos5250-smdk5250.dts
+++ b/board/samsung/dts/exynos5250-smdk5250.dts
@@ -30,6 +30,10 @@ 
 		spi2 = "/spi@12d40000";
 		spi3 = "/spi@131a0000";
 		spi4 = "/spi@131b0000";
+		mmc0 = "/mmc@12200000";
+		mmc1 = "/mmc@12210000";
+		mmc2 = "/mmc@12220000";
+		mmc3 = "/mmc@12230000";
 	};
 
 	sromc@12250000 {
@@ -66,4 +70,22 @@ 
 			compatible = "maxim,max77686_pmic";
 		};
 	};
+
+	mmc@12200000 {
+		samsung,bus-width = <8>;
+		samsung,timing = <1 3 3>;
+	};
+
+	mmc@12210000 {
+		status = "disabled";
+	};
+
+	mmc@12220000 {
+		samsung,bus-width = <4>;
+		samsung,timing = <1 2 3>;
+	};
+
+	mmc@12230000 {
+		status = "disabled";
+	};
 };
diff --git a/doc/device-tree-bindings/exynos/dwmmc.txt b/doc/device-tree-bindings/exynos/dwmmc.txt
new file mode 100644
index 0000000..0054ace
--- /dev/null
+++ b/doc/device-tree-bindings/exynos/dwmmc.txt
@@ -0,0 +1,49 @@ 
+* Exynos 5250 DWC_mobile_storage
+
+The Exynos 5250 provides DWC_mobile_storage interface which supports
+. Embedded Multimedia Cards (EMMC-version 4.5)
+. Secure Digital memory (SD mem-version 2.0)
+. Secure Digital I/O (SDIO-version 3.0)
+. Consumer Electronics Advanced Transport Architecture (CE-ATA-version 1.1)
+
+The Exynos 5250 DWC_mobile_storage provides four channels.
+SOC specific and Board specific properties are channel specific.
+
+Required SoC Specific Properties:
+
+- compatible: should be
+	- samsung,exynos5250-dwmmc: for exynos5250 platforms
+
+- reg: physical base address of the controller and length of memory mapped
+	region.
+
+- interrupts: The interrupt number to the cpu.
+
+Required Board Specific Properties:
+
+- #address-cells: should be 1.
+- #size-cells: should be 0.
+- samsung,bus-width: The width of the bus used to interface the devices
+	supported by DWC_mobile_storage (SD-MMC/EMMC/SDIO).
+	. Typically the bus width is 4 or 8.
+- samsung,timing: The timing values to be written into the
+	Drv/sample clock selection register of corresponding channel.
+	. It is comprised of 3 values corresponding to the 3 fileds
+	  'SelClk_sample', 'SelClk_drv' and 'DIVRATIO' of CLKSEL register.
+	. SelClk_sample: Select sample clock among 8 shifted clocks.
+	. SelClk_drv: Select drv clock among 8 shifted clocks.
+	. DIVRATIO: Clock Divide ratio select.
+	. The above 3 values are used by the clock phase shifter.
+
+Example:
+
+mmc@12200000 {
+	samsung,bus-width = <8>;
+	samsung,timing = <1 3 3>;
+}
+In the above example,
+	. The bus width is 8
+	. Timing is comprised of 3 values as explained below
+		1 - SelClk_sample
+		3 - SelClk_drv
+		3 - DIVRATIO