diff mbox

[U-Boot,v3] i.mx: i.mx6q: add the initial support for i.mx6q Sabre Lite board

Message ID 1324884888-9618-1-git-send-email-dirk.behme@gmail.com
State Changes Requested
Headers show

Commit Message

Dirk Behme Dec. 26, 2011, 7:34 a.m. UTC
From: Jason Liu <jason.hui@linaro.org>

Add the initial support for Freescale i.MX6Q Sabre Lite board

Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
CC: Jason Liu <jason.hui@linaro.org>
CC: Eric Nelson <eric.nelson@boundarydevices.com>
---
V3: Add a readme.
    Enable the usboh3 clock: Bits 0 and 1 of CCM_CCGR7 are the usboh3
    clock enable bits. Enabling this clock is necessary for the USB download:

    -DATA 4 0x020c4080 0x000003FC
    +DATA 4 0x020c4080 0x000003FF

V2: change the default script to let linaro image boot, and also
    change the default env to dev 0, which is normal SD slot, not
    the Micro-SD slot

 MAINTAINERS                                   |    1 
 board/freescale/mx6qsabrelite/Makefile        |   42 ++++++
 board/freescale/mx6qsabrelite/imximage.cfg    |  170 ++++++++++++++++++++++++++
 board/freescale/mx6qsabrelite/mx6qsabrelite.c |  150 ++++++++++++++++++++++
 boards.cfg                                    |    1 
 doc/README.mx6qsabrelite                      |   67 ++++++++++
 include/configs/mx6qsabrelite.h               |  162 ++++++++++++++++++++++++
 7 files changed, 593 insertions(+)
 create mode 100644 board/freescale/mx6qsabrelite/Makefile
 create mode 100644 board/freescale/mx6qsabrelite/imximage.cfg
 create mode 100644 board/freescale/mx6qsabrelite/mx6qsabrelite.c
 create mode 100644 include/configs/mx6qsabrelite.h

Comments

Stefano Babic Dec. 28, 2011, 12:32 p.m. UTC | #1
On 26/12/2011 08:34, Dirk Behme wrote:
> From: Jason Liu <jason.hui@linaro.org>
> 
> Add the initial support for Freescale i.MX6Q Sabre Lite board
> 

Hi Dirk,

> 
> Index: freescale-u-boot-imx.git/MAINTAINERS
> ===================================================================
> --- freescale-u-boot-imx.git.orig/MAINTAINERS
> +++ freescale-u-boot-imx.git/MAINTAINERS
> @@ -579,6 +579,7 @@ Jason Liu <r64343@freescale.com>
>  	mx53evk         i.MX53
>  	mx53loco        i.MX53
>  	mx6qarm2	i.MX6Q
> +	mx6qsabrelite   i.MX6Q

Can you confirm that Jason is the maintainer of the board ?

> +
> +#ifdef CONFIG_FSL_ESDHC
> +struct fsl_esdhc_cfg usdhc_cfg[2] = {
> +       {USDHC3_BASE_ADDR, 1},
> +       {USDHC4_BASE_ADDR, 1},
> +};
> +
> +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
> +{
> +       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
> +
> +       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
> +               gpio_direction_input(192); /*GPIO7_0*/
> +               *cd = gpio_get_value(192);
> +       } else {
> +               gpio_direction_input(38); /*GPIO2_6*/
> +               *cd = gpio_get_value(38);
> +       }
> +
> +       return 0;
> +}

I have not an evident comment with this code, but there are pending
patches to change this behavior:

http://patchwork.ozlabs.org/patch/132398/

The patches already updates other i.MX boards. If, as I presume, this
patches goes soon in mainline, board_mmc_getcd() must be updated to be
adjusted for the new API. I will wait a while before merging your patch
to check the status of the mmc patchset.

> @@ -0,0 +1,67 @@
> +U-Boot for the Freescale i.MX6q SabreLite board
> +
> +This file contains information for the port of U-Boot to the Freescale
> +i.MX6q SabreLite board.
> +
> +1. Boot source, boot from SD card
> +---------------------------------
> +
> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
> +boot from SD card only. However, by default, the early version of SabreLite
> +boards boot from the SPI NOR flash. These boards need to be reflashed with
> +a small SD card loader to support boot from SD card. This small SD card loader
> +will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
> +the loader will in turn request the BootROM to load the U-Boot from SD card.
> +At the moment of writing, please check with Freescale on the availablity of
> +this small SD loader binary.

Ok, fine. For my information only, is there a revision version to be
checked if the board needs this small loader ?

Best regards,
Stefano Babic
Dirk Behme Dec. 29, 2011, 7:09 a.m. UTC | #2
On 28.12.2011 13:32, Stefano Babic wrote:
> On 26/12/2011 08:34, Dirk Behme wrote:
>> From: Jason Liu<jason.hui@linaro.org>
>>
>> Add the initial support for Freescale i.MX6Q Sabre Lite board
>>
>
> Hi Dirk,
>
>>
>> Index: freescale-u-boot-imx.git/MAINTAINERS
>> ===================================================================
>> --- freescale-u-boot-imx.git.orig/MAINTAINERS
>> +++ freescale-u-boot-imx.git/MAINTAINERS
>> @@ -579,6 +579,7 @@ Jason Liu<r64343@freescale.com>
>>   	mx53evk         i.MX53
>>   	mx53loco        i.MX53
>>   	mx6qarm2	i.MX6Q
>> +	mx6qsabrelite   i.MX6Q
>
> Can you confirm that Jason is the maintainer of the board ?

Yes, I think so, it shouldn't have changed since v2

http://lists.denx.de/pipermail/u-boot/2011-December/113142.html

Jason?

>> +
>> +#ifdef CONFIG_FSL_ESDHC
>> +struct fsl_esdhc_cfg usdhc_cfg[2] = {
>> +       {USDHC3_BASE_ADDR, 1},
>> +       {USDHC4_BASE_ADDR, 1},
>> +};
>> +
>> +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
>> +{
>> +       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
>> +
>> +       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
>> +               gpio_direction_input(192); /*GPIO7_0*/
>> +               *cd = gpio_get_value(192);
>> +       } else {
>> +               gpio_direction_input(38); /*GPIO2_6*/
>> +               *cd = gpio_get_value(38);
>> +       }
>> +
>> +       return 0;
>> +}
>
> I have not an evident comment with this code, but there are pending
> patches to change this behavior:
>
> http://patchwork.ozlabs.org/patch/132398/
>
> The patches already updates other i.MX boards. If, as I presume, this
> patches goes soon in mainline, board_mmc_getcd() must be updated to be
> adjusted for the new API. I will wait a while before merging your patch
> to check the status of the mmc patchset.

Ok, good to know. Thanks!

Let us know if you want us to update this patch against

http://patchwork.ozlabs.org/patch/132398/

>> @@ -0,0 +1,67 @@
>> +U-Boot for the Freescale i.MX6q SabreLite board
>> +
>> +This file contains information for the port of U-Boot to the Freescale
>> +i.MX6q SabreLite board.
>> +
>> +1. Boot source, boot from SD card
>> +---------------------------------
>> +
>> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
>> +boot from SD card only. However, by default, the early version of SabreLite
>> +boards boot from the SPI NOR flash. These boards need to be reflashed with
>> +a small SD card loader to support boot from SD card. This small SD card loader
>> +will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
>> +the loader will in turn request the BootROM to load the U-Boot from SD card.
>> +At the moment of writing, please check with Freescale on the availablity of
>> +this small SD loader binary.
>
> Ok, fine. For my information only, is there a revision version to be
> checked if the board needs this small loader ?

Good question ;) There is some discussion if it is possible to make a 
new version of the board which is configurable to SD boot by HW. But 
there seem to be some layout issues. So atm I would answer your 
question with 'no'.

Best regards

Dirk
Liu Hui-R64343 Dec. 29, 2011, 8:06 a.m. UTC | #3
>-----Original Message-----
>From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de]
>On Behalf Of Dirk Behme
>Sent: Thursday, December 29, 2011 3:10 PM
>To: Stefano Babic; Jason Liu
>Cc: u-boot@lists.denx.de; Dirk Behme
>Subject: Re: [U-Boot] [PATCH v3] i.mx: i.mx6q: add the initial support for i.mx6q
>Sabre Lite board
>
>On 28.12.2011 13:32, Stefano Babic wrote:
>> On 26/12/2011 08:34, Dirk Behme wrote:
>>> From: Jason Liu<jason.hui@linaro.org>
>>>
>>> Add the initial support for Freescale i.MX6Q Sabre Lite board
>>>
>>
>> Hi Dirk,
>>
>>>
>>> Index: freescale-u-boot-imx.git/MAINTAINERS
>>>
>=================================================================
>==
>>> --- freescale-u-boot-imx.git.orig/MAINTAINERS
>>> +++ freescale-u-boot-imx.git/MAINTAINERS
>>> @@ -579,6 +579,7 @@ Jason Liu<r64343@freescale.com>
>>>   	mx53evk         i.MX53
>>>   	mx53loco        i.MX53
>>>   	mx6qarm2	i.MX6Q
>>> +	mx6qsabrelite   i.MX6Q
>>
>> Can you confirm that Jason is the maintainer of the board ?
>
>Yes, I think so, it shouldn't have changed since v2
>
>http://lists.denx.de/pipermail/u-boot/2011-December/113142.html
>
>Jason?

Yes. And please change the tag with me to signed-off since I contribute the patch. Thanks,

>
>>> +
>>> +#ifdef CONFIG_FSL_ESDHC
>>> +struct fsl_esdhc_cfg usdhc_cfg[2] = {
>>> +       {USDHC3_BASE_ADDR, 1},
>>> +       {USDHC4_BASE_ADDR, 1},
>>> +};
>>> +
>>> +int board_mmc_getcd(u8 *cd, struct mmc *mmc) {
>>> +       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg
>>> +*)mmc->priv;
>>> +
>>> +       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
>>> +               gpio_direction_input(192); /*GPIO7_0*/
>>> +               *cd = gpio_get_value(192);
>>> +       } else {
>>> +               gpio_direction_input(38); /*GPIO2_6*/
>>> +               *cd = gpio_get_value(38);
>>> +       }
>>> +
>>> +       return 0;
>>> +}
>>
>> I have not an evident comment with this code, but there are pending
>> patches to change this behavior:
>>
>> http://patchwork.ozlabs.org/patch/132398/
>>
>> The patches already updates other i.MX boards. If, as I presume, this
>> patches goes soon in mainline, board_mmc_getcd() must be updated to be
>> adjusted for the new API. I will wait a while before merging your
>> patch to check the status of the mmc patchset.
>
>Ok, good to know. Thanks!
>
>Let us know if you want us to update this patch against
>
>http://patchwork.ozlabs.org/patch/132398/

Yes, after the new MMC CD patch goes mainline, there will be a new version to update with it.

>
>>> @@ -0,0 +1,67 @@
>>> +U-Boot for the Freescale i.MX6q SabreLite board
>>> +
>>> +This file contains information for the port of U-Boot to the
>>> +Freescale i.MX6q SabreLite board.
>>> +
>>> +1. Boot source, boot from SD card
>>> +---------------------------------
>>> +
>>> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board
>>> +supports boot from SD card only. However, by default, the early
>>> +version of SabreLite boards boot from the SPI NOR flash. These
>>> +boards need to be reflashed with a small SD card loader to support
>>> +boot from SD card. This small SD card loader will be flashed into
>>> +the SPI NOR. The board will still boot from SPI NOR, but the loader will in
>turn request the BootROM to load the U-Boot from SD card.
>>> +At the moment of writing, please check with Freescale on the
>>> +availablity of this small SD loader binary.
>>
>> Ok, fine. For my information only, is there a revision version to be
>> checked if the board needs this small loader ?
>
>Good question ;) There is some discussion if it is possible to make a new version
>of the board which is configurable to SD boot by HW. But there seem to be
>some layout issues. So atm I would answer your question with 'no'.
+1

Happy New Year!
>
>Best regards
>
>Dirk
>
>_______________________________________________
>U-Boot mailing list
>U-Boot@lists.denx.de
>http://lists.denx.de/mailman/listinfo/u-boot
Eric Nelson Dec. 29, 2011, 4:13 p.m. UTC | #4
On 12/29/2011 12:09 AM, Dirk Behme wrote:
> On 28.12.2011 13:32, Stefano Babic wrote:
>> On 26/12/2011 08:34, Dirk Behme wrote:
>>> From: Jason Liu<jason.hui@linaro.org>
>>>
>>> Add the initial support for Freescale i.MX6Q Sabre Lite board
>>>
>>
>> Hi Dirk,
>>
>>>
>>> Index: freescale-u-boot-imx.git/MAINTAINERS
>>> ===================================================================
>>> --- freescale-u-boot-imx.git.orig/MAINTAINERS
>>> +++ freescale-u-boot-imx.git/MAINTAINERS
>>> @@ -579,6 +579,7 @@ Jason Liu<r64343@freescale.com>
>>> mx53evk i.MX53
>>> mx53loco i.MX53
>>> mx6qarm2 i.MX6Q
>>> + mx6qsabrelite i.MX6Q
>>
>> Can you confirm that Jason is the maintainer of the board ?
>
> Yes, I think so, it shouldn't have changed since v2
>
> http://lists.denx.de/pipermail/u-boot/2011-December/113142.html
>
> Jason?
>
>>> +
>>> +#ifdef CONFIG_FSL_ESDHC
>>> +struct fsl_esdhc_cfg usdhc_cfg[2] = {
>>> + {USDHC3_BASE_ADDR, 1},
>>> + {USDHC4_BASE_ADDR, 1},
>>> +};
>>> +
>>> +int board_mmc_getcd(u8 *cd, struct mmc *mmc)
>>> +{
>>> + struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
>>> +
>>> + if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
>>> + gpio_direction_input(192); /*GPIO7_0*/
>>> + *cd = gpio_get_value(192);
>>> + } else {
>>> + gpio_direction_input(38); /*GPIO2_6*/
>>> + *cd = gpio_get_value(38);
>>> + }
>>> +
>>> + return 0;
>>> +}
>>
>> I have not an evident comment with this code, but there are pending
>> patches to change this behavior:
>>
>> http://patchwork.ozlabs.org/patch/132398/
>>
>> The patches already updates other i.MX boards. If, as I presume, this
>> patches goes soon in mainline, board_mmc_getcd() must be updated to be
>> adjusted for the new API. I will wait a while before merging your patch
>> to check the status of the mmc patchset.
>
> Ok, good to know. Thanks!
>
> Let us know if you want us to update this patch against
>
> http://patchwork.ozlabs.org/patch/132398/
>
>>> @@ -0,0 +1,67 @@
>>> +U-Boot for the Freescale i.MX6q SabreLite board
>>> +
>>> +This file contains information for the port of U-Boot to the Freescale
>>> +i.MX6q SabreLite board.
>>> +
>>> +1. Boot source, boot from SD card
>>> +---------------------------------
>>> +
>>> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
>>> +boot from SD card only. However, by default, the early version of SabreLite
>>> +boards boot from the SPI NOR flash. These boards need to be reflashed with
>>> +a small SD card loader to support boot from SD card. This small SD card loader
>>> +will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
>>> +the loader will in turn request the BootROM to load the U-Boot from SD card.
>>> +At the moment of writing, please check with Freescale on the availablity of
>>> +this small SD loader binary.
>>
>> Ok, fine. For my information only, is there a revision version to be
>> checked if the board needs this small loader ?
>
> Good question ;) There is some discussion if it is possible to make a new
> version of the board which is configurable to SD boot by HW. But there seem to
> be some layout issues. So atm I would answer your question with 'no'.
>
To clarify, all SabreLite boards produced to date have their boot fuses
blown to select boot to SPI NOR. In the future, this could be changed to
allow boot to SD, but that's a one-time choice.

The layout issues concern the use "Internal Boot Mode", which
allows a set of ~32 GPIOs to override the fuse settings, which will
require a bunch of pull-up/down resistors.

> Best regards
>
> Dirk
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
 >
Wolfgang Grandegger Jan. 19, 2012, 9:58 a.m. UTC | #5
On 12/26/2011 08:34 AM, Dirk Behme wrote:
> From: Jason Liu <jason.hui@linaro.org>
> 
> Add the initial support for Freescale i.MX6Q Sabre Lite board
> 
> Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
> CC: Jason Liu <jason.hui@linaro.org>
> CC: Eric Nelson <eric.nelson@boundarydevices.com>
> ---

...

> Index: freescale-u-boot-imx.git/doc/README.mx6qsabrelite
> ===================================================================
> --- /dev/null
> +++ freescale-u-boot-imx.git/doc/README.mx6qsabrelite
> @@ -0,0 +1,67 @@
> +U-Boot for the Freescale i.MX6q SabreLite board
> +
> +This file contains information for the port of U-Boot to the Freescale
> +i.MX6q SabreLite board.
> +
> +1. Boot source, boot from SD card
> +---------------------------------
> +
> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
> +boot from SD card only. However, by default, the early version of SabreLite
> +boards boot from the SPI NOR flash. These boards need to be reflashed with
> +a small SD card loader to support boot from SD card. This small SD card loader
> +will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
> +the loader will in turn request the BootROM to load the U-Boot from SD card.
> +At the moment of writing, please check with Freescale on the availablity of
> +this small SD loader binary.
> +
> +To update the SPI-NOR on the SabreLite board without the Freescale
> +manufacturing tool use the following procedure:
> +
> +1. Write this SD card loader onto a large SD card using:
> +
> + sudo dd if=MX6_SPI_to_SD_loader.bin of=/dev/sXx
> +
> +Note: Replace sXx with the device representing the SD card in your system.
> +
> +Note: This writes SD card loader at address 0
> +
> +2. Put this SD card into the slot for the large SD card (SD3 on the bottom of
> +the board)
> +
> +3. Power-up the SabreLite, press 'space' to enter command mode in the U-Boot
> +(the default one the board is shipped with, starting from the SPI NOR) and
> +enter the following commands:
> +
> + MX6Q SABRELITE U-Boot > mmc dev 0
> + MX6Q SABRELITE U-Boot > mmc read 0x10800000 0 200
> + MX6Q SABRELITE U-Boot > sf probe 1
> + MX6Q SABRELITE U-Boot > sf erase 0 0x40000
> + MX6Q SABRELITE U-Boot > sf write 0x10800000 0 0x40000
> +
> +4. done.
> +
> +In case you somehow do not succeed with this procedure you will have to use
> +the Freescale manufacturing tool in order to reflash the SPI-NOR.
> +
> +Note: The board now boots from full size SD3 on the bottom of the board. NOT
> +      the micro SD4/BOOT slot on the top of the board. I.e. you have to use
> +      full size SD cards.
> +
> +This information is taken from
> +
> +https://wiki.linaro.org/Boards/MX6QSabreLite

Where can I find the "SPI_to_SD_loader.bin" image? What means early
version of SabreLite boards? How can I select boot from SD-Card on
newer versions? And will the u-boot.imx image also boot when loaded
to the SPI-NOR fash?

Wolfgang.
Behme Dirk (CM/ESO2) Jan. 19, 2012, 10:26 a.m. UTC | #6
Dear Wolfgang,

On 19.01.2012 10:58, Wolfgang Grandegger wrote:
> On 12/26/2011 08:34 AM, Dirk Behme wrote:
>> From: Jason Liu <jason.hui@linaro.org>
>>
>> Add the initial support for Freescale i.MX6Q Sabre Lite board
>>
>> Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
>> CC: Jason Liu <jason.hui@linaro.org>
>> CC: Eric Nelson <eric.nelson@boundarydevices.com>
>> ---
> 
> ...
> 
>> Index: freescale-u-boot-imx.git/doc/README.mx6qsabrelite
>> ===================================================================
>> --- /dev/null
>> +++ freescale-u-boot-imx.git/doc/README.mx6qsabrelite
>> @@ -0,0 +1,67 @@
>> +U-Boot for the Freescale i.MX6q SabreLite board
>> +
>> +This file contains information for the port of U-Boot to the Freescale
>> +i.MX6q SabreLite board.
>> +
>> +1. Boot source, boot from SD card
>> +---------------------------------
>> +
>> +The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
>> +boot from SD card only. However, by default, the early version of SabreLite
>> +boards boot from the SPI NOR flash. These boards need to be reflashed with
>> +a small SD card loader to support boot from SD card. This small SD card loader
>> +will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
>> +the loader will in turn request the BootROM to load the U-Boot from SD card.
>> +At the moment of writing, please check with Freescale on the availablity of
>> +this small SD loader binary.
>> +
>> +To update the SPI-NOR on the SabreLite board without the Freescale
>> +manufacturing tool use the following procedure:
>> +
>> +1. Write this SD card loader onto a large SD card using:
>> +
>> + sudo dd if=MX6_SPI_to_SD_loader.bin of=/dev/sXx
>> +
>> +Note: Replace sXx with the device representing the SD card in your system.
>> +
>> +Note: This writes SD card loader at address 0
>> +
>> +2. Put this SD card into the slot for the large SD card (SD3 on the bottom of
>> +the board)
>> +
>> +3. Power-up the SabreLite, press 'space' to enter command mode in the U-Boot
>> +(the default one the board is shipped with, starting from the SPI NOR) and
>> +enter the following commands:
>> +
>> + MX6Q SABRELITE U-Boot > mmc dev 0
>> + MX6Q SABRELITE U-Boot > mmc read 0x10800000 0 200
>> + MX6Q SABRELITE U-Boot > sf probe 1
>> + MX6Q SABRELITE U-Boot > sf erase 0 0x40000
>> + MX6Q SABRELITE U-Boot > sf write 0x10800000 0 0x40000
>> +
>> +4. done.
>> +
>> +In case you somehow do not succeed with this procedure you will have to use
>> +the Freescale manufacturing tool in order to reflash the SPI-NOR.
>> +
>> +Note: The board now boots from full size SD3 on the bottom of the board. NOT
>> +      the micro SD4/BOOT slot on the top of the board. I.e. you have to use
>> +      full size SD cards.
>> +
>> +This information is taken from
>> +
>> +https://wiki.linaro.org/Boards/MX6QSabreLite
> 
> Where can I find the "SPI_to_SD_loader.bin" image? 

Unfortunately, at the moment you have to ask your Freescale contact for 
this. We ping Freescale since weeks for this. Last time I heard about 
this Freescale planned to release this binary under a BSD license. They 
are still "working through the licensing details", though :(

> What means early
> version of SabreLite boards? 

Most probably Eric will be able to better answer this.

What I understood: Up to now, the boards boot from SPI NOR by default. 
There was some _discussion_ to change this to SD boot. Most probably 
"early version" was written while this discussion under the impression 
that later boards might switch to SD boot. To my understanding the 
result of this discussion was that this change would be difficult, though.

> How can I select boot from SD-Card on
> newer versions? 

To my understanding there are no "newer versions" yet.

> And will the u-boot.imx image also boot when loaded
> to the SPI-NOR fash?

Hmm, I'm not sure about this as I haven't tested this.

Eric?

Please note that Eric is in the process of mainlining the SPI driver for 
i.MX6, atm.

Best regards

Dirk
Eric Nelson Jan. 20, 2012, 12:56 a.m. UTC | #7
Hi Wolfgang,

On 01/19/2012 03:26 AM, Dirk Behme wrote:
> Dear Wolfgang,
>
> On 19.01.2012 10:58, Wolfgang Grandegger wrote:
>>
>> Where can I find the "SPI_to_SD_loader.bin" image?
>
> Unfortunately, at the moment you have to ask your Freescale contact for this. We
> ping Freescale since weeks for this. Last time I heard about this Freescale
> planned to release this binary under a BSD license. They are still "working
> through the licensing details", though :(
>
>> What means early
>> version of SabreLite boards?
>
> Most probably Eric will be able to better answer this.
>

At this point **all** versions of SabreLite are configured to boot to SPI
NOR through the fuses.

As Dirk mentioned, we've had some conversations about booting to SD card,
but once the fuse is blown, it's blown.

> What I understood: Up to now, the boards boot from SPI NOR by default. There was
> some _discussion_ to change this to SD boot. Most probably "early version" was
> written while this discussion under the impression that later boards might
> switch to SD boot. To my understanding the result of this discussion was that
> this change would be difficult, though.
>

We've discussed, but currently have no plans to support a physical switch
to control this decision. This would involve using the "Internal" boot mode
position of SW1 and then pulling a **bunch** of pins high or low to control
the boot flow.

Note that all of the pins are available on connector J12 (BOOT/EIM), so it
might be done with a small daughter-board.

>> How can I select boot from SD-Card on newer versions?
>
> To my understanding there are no "newer versions" yet.
>

Right.

>> And will the u-boot.imx image also boot when loaded
>> to the SPI-NOR fash?
>
> Hmm, I'm not sure about this as I haven't tested this.
>
> Eric?
>

Yes. If you program u-boot.imx to offset 0x400, it will boot.

I just did so as shown below.

I started by placing SW1 in the 01 position (boot to USB), and
used imx_usb to dowload u-boot.imx:

	MX6QSABRELITE U-Boot > dhcp 10800000 192.168.0.112:u-boot.imx
	fec_open:Speed=100
	BOOTP broadcast 1
	BOOTP broadcast 2
	DHCP client bound to address 29.6.1.24
	Using FEC device
	TFTP from server 192.168.0.112; our IP address is 29.6.1.24; sending 	through 
gateway 29.6.1.1
	Filename 'u-boot.imx'.
	Load address: 0x10800000
	Loading: #########################################
	done
	Bytes transferred = 207112 (32908 hex)
	MX6QSABRELITE U-Boot > sf write 0x10800000 0x400 $filesize

<switched SW1 to BOOT mode 0 and hit the reset button here>

	U-Boot 2011.12-00048-g5c30101 (Jan 19 2012 - 17:14:32)
	CPU:   Freescale i.MX61 family rev1.0 at 792 MHz
	Reset cause: POR
	Board: MX6Q-Sabre Lite
	DRAM:  1 GiB
	WARNING: Caches not enabled
	MMC:   FSL_SDHC: 0, FSL_SDHC: 1
	MMC init failed
	Using default environment

	In:    serial
	Out:   serial
	Err:   serial
	Net:   FEC
	Hit any key to stop autoboot:  0
	MX6QSABRELITE U-Boot >
	MX6QSABRELITE U-Boot >

The imx_usb utility is available here:
	http://boundarydevices.com/git?p=imx_usb_loader.git

It requires libusb-1.0-0-dev to build, but has few other dependencies.

Usage is simple: hand it the file you want to execute. It will look
at the header to find out where to place the image.
	~/imx_usb_loader$ sudo sudo ./imx_usb u-boot.imx

 > Please note that Eric is in the process of mainlining the SPI driver for
 > i.MX6, atm.

If you use my latest patch set, you can place the environment in SPI-NOR as
well by commenting out CONFIG_ENV_IS_IN_MMC, and un-commenting ..._IN_SPI_FLASH
in include/configs/mx6qsabrelite.h.

Regards,


Eric
Wolfgang Grandegger Jan. 20, 2012, 9:15 a.m. UTC | #8
Hi Eric,

On 01/20/2012 01:56 AM, Eric Nelson wrote:
> Hi Wolfgang,
> 
> On 01/19/2012 03:26 AM, Dirk Behme wrote:
>> Dear Wolfgang,
>>
>> On 19.01.2012 10:58, Wolfgang Grandegger wrote:
>>>
>>> Where can I find the "SPI_to_SD_loader.bin" image?
>>
>> Unfortunately, at the moment you have to ask your Freescale contact
>> for this. We
>> ping Freescale since weeks for this. Last time I heard about this
>> Freescale
>> planned to release this binary under a BSD license. They are still
>> "working
>> through the licensing details", though :(
>>
>>> What means early
>>> version of SabreLite boards?
>>
>> Most probably Eric will be able to better answer this.
>>
> 
> At this point **all** versions of SabreLite are configured to boot to SPI
> NOR through the fuses.
> 
> As Dirk mentioned, we've had some conversations about booting to SD card,
> but once the fuse is blown, it's blown.
> 
>> What I understood: Up to now, the boards boot from SPI NOR by default.
>> There was
>> some _discussion_ to change this to SD boot. Most probably "early
>> version" was
>> written while this discussion under the impression that later boards
>> might
>> switch to SD boot. To my understanding the result of this discussion
>> was that
>> this change would be difficult, though.
>>
> 
> We've discussed, but currently have no plans to support a physical switch
> to control this decision. This would involve using the "Internal" boot mode
> position of SW1 and then pulling a **bunch** of pins high or low to control
> the boot flow.
> 
> Note that all of the pins are available on connector J12 (BOOT/EIM), so it
> might be done with a small daughter-board.

OK, I see.

> 
>>> How can I select boot from SD-Card on newer versions?
>>
>> To my understanding there are no "newer versions" yet.
>>
> 
> Right.
> 
>>> And will the u-boot.imx image also boot when loaded
>>> to the SPI-NOR fash?
>>
>> Hmm, I'm not sure about this as I haven't tested this.
>>
>> Eric?
>>
> 
> Yes. If you program u-boot.imx to offset 0x400, it will boot.
> 
> I just did so as shown below.
> 
> I started by placing SW1 in the 01 position (boot to USB), and
> used imx_usb to dowload u-boot.imx:
> 
>     MX6QSABRELITE U-Boot > dhcp 10800000 192.168.0.112:u-boot.imx
>     fec_open:Speed=100
>     BOOTP broadcast 1
>     BOOTP broadcast 2
>     DHCP client bound to address 29.6.1.24
>     Using FEC device
>     TFTP from server 192.168.0.112; our IP address is 29.6.1.24;
> sending     through gateway 29.6.1.1
>     Filename 'u-boot.imx'.
>     Load address: 0x10800000
>     Loading: #########################################
>     done
>     Bytes transferred = 207112 (32908 hex)
>     MX6QSABRELITE U-Boot > sf write 0x10800000 0x400 $filesize

But above you used the network to load u-boot.imx. With imx_usb you
loaded and booted an image via USB first, I assume.

> <switched SW1 to BOOT mode 0 and hit the reset button here>
> 
>     U-Boot 2011.12-00048-g5c30101 (Jan 19 2012 - 17:14:32)
>     CPU:   Freescale i.MX61 family rev1.0 at 792 MHz
>     Reset cause: POR
>     Board: MX6Q-Sabre Lite
>     DRAM:  1 GiB
>     WARNING: Caches not enabled
>     MMC:   FSL_SDHC: 0, FSL_SDHC: 1
>     MMC init failed
>     Using default environment
> 
>     In:    serial
>     Out:   serial
>     Err:   serial
>     Net:   FEC
>     Hit any key to stop autoboot:  0
>     MX6QSABRELITE U-Boot >
>     MX6QSABRELITE U-Boot >
> 
> The imx_usb utility is available here:
>     http://boundarydevices.com/git?p=imx_usb_loader.git
> 
> It requires libusb-1.0-0-dev to build, but has few other dependencies.
> 
> Usage is simple: hand it the file you want to execute. It will look
> at the header to find out where to place the image.
>     ~/imx_usb_loader$ sudo sudo ./imx_usb u-boot.imx

Nice fallback in case the bootloader does not start. I will give it a
try a.s.a.p. We actually plan to use a BDI[23]000 for that purpose.

>> Please note that Eric is in the process of mainlining the SPI driver for
>> i.MX6, atm.
> 
> If you use my latest patch set, you can place the environment in SPI-NOR as
> well by commenting out CONFIG_ENV_IS_IN_MMC, and un-commenting
> ..._IN_SPI_FLASH
> in include/configs/mx6qsabrelite.h.

OK, that's already an excellent starting point.

Thanks.

Wolfgang.
Eric Nelson Jan. 20, 2012, 1:54 p.m. UTC | #9
On 01/20/2012 02:15 AM, Wolfgang Grandegger wrote:
>
> On 01/20/2012 01:56 AM, Eric Nelson wrote:
>>
>> Yes. If you program u-boot.imx to offset 0x400, it will boot.
>>
>> I just did so as shown below.
>>
>> I started by placing SW1 in the 01 position (boot to USB), and
>> used imx_usb to dowload u-boot.imx:
>>
>>      MX6QSABRELITE U-Boot>  dhcp 10800000 192.168.0.112:u-boot.imx
>>      fec_open:Speed=100
>>      BOOTP broadcast 1
>>      BOOTP broadcast 2
>>      DHCP client bound to address 29.6.1.24
>>      Using FEC device
>>      TFTP from server 192.168.0.112; our IP address is 29.6.1.24;
>>      sending  through gateway 29.6.1.1
>>      Filename 'u-boot.imx'.
>>      Load address: 0x10800000
>>      Loading: #########################################
>>      done
>>      Bytes transferred = 207112 (32908 hex)
>>      MX6QSABRELITE U-Boot>  sf write 0x10800000 0x400 $filesize
>
> But above you used the network to load u-boot.imx. With imx_usb you
> loaded and booted an image via USB first, I assume.
>

Yeah. USB to execute U-Boot, then Ethernet to get a pristine
image into RAM for programming.

I'd love to get USB support for MX6Q into U-Boot, but that's another
project...
diff mbox

Patch

Index: freescale-u-boot-imx.git/MAINTAINERS
===================================================================
--- freescale-u-boot-imx.git.orig/MAINTAINERS
+++ freescale-u-boot-imx.git/MAINTAINERS
@@ -579,6 +579,7 @@  Jason Liu <r64343@freescale.com>
 	mx53evk         i.MX53
 	mx53loco        i.MX53
 	mx6qarm2	i.MX6Q
+	mx6qsabrelite   i.MX6Q
 
 Enric Balletbo i Serra <eballetbo@iseebcn.com>
 
Index: freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/Makefile
===================================================================
--- /dev/null
+++ freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/Makefile
@@ -0,0 +1,42 @@ 
+#
+# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).o
+
+COBJS  := mx6qsabrelite.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS) $(SOBJS)
+	$(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
Index: freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/imximage.cfg
===================================================================
--- /dev/null
+++ freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/imximage.cfg
@@ -0,0 +1,170 @@ 
+# Copyright (C) 2011 Freescale Semiconductor, Inc.
+# Jason Liu <r64343@freescale.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not write to the Free Software
+# Foundation Inc. 51 Franklin Street Fifth Floor Boston,
+# MA 02110-1301 USA
+#
+# Refer docs/README.imxmage for more details about how-to configure
+# and create imximage boot image
+#
+# The syntax is taken as close as possible with the kwbimage
+
+# image version
+
+IMAGE_VERSION 2
+
+# Boot Device : one of
+# spi, sd (the board has no nand neither onenand)
+
+BOOT_FROM      sd
+
+# Device Configuration Data (DCD)
+#
+# Each entry must have the format:
+# Addr-type           Address        Value
+#
+# where:
+#      Addr-type register length (1,2 or 4 bytes)
+#      Address   absolute address of the register
+#      value     value to be stored in the register
+DATA 4 0x020e05a8 0x00000030
+DATA 4 0x020e05b0 0x00000030
+DATA 4 0x020e0524 0x00000030
+DATA 4 0x020e051c 0x00000030
+
+DATA 4 0x020e0518 0x00000030
+DATA 4 0x020e050c 0x00000030
+DATA 4 0x020e05b8 0x00000030
+DATA 4 0x020e05c0 0x00000030
+
+DATA 4 0x020e05ac 0x00020030
+DATA 4 0x020e05b4 0x00020030
+DATA 4 0x020e0528 0x00020030
+DATA 4 0x020e0520 0x00020030
+
+DATA 4 0x020e0514 0x00020030
+DATA 4 0x020e0510 0x00020030
+DATA 4 0x020e05bc 0x00020030
+DATA 4 0x020e05c4 0x00020030
+
+DATA 4 0x020e056c 0x00020030
+DATA 4 0x020e0578 0x00020030
+DATA 4 0x020e0588 0x00020030
+DATA 4 0x020e0594 0x00020030
+
+DATA 4 0x020e057c 0x00020030
+DATA 4 0x020e0590 0x00003000
+DATA 4 0x020e0598 0x00003000
+DATA 4 0x020e058c 0x00000000
+
+DATA 4 0x020e059c 0x00003030
+DATA 4 0x020e05a0 0x00003030
+DATA 4 0x020e0784 0x00000030
+DATA 4 0x020e0788 0x00000030
+
+DATA 4 0x020e0794 0x00000030
+DATA 4 0x020e079c 0x00000030
+DATA 4 0x020e07a0 0x00000030
+DATA 4 0x020e07a4 0x00000030
+
+DATA 4 0x020e07a8 0x00000030
+DATA 4 0x020e0748 0x00000030
+DATA 4 0x020e074c 0x00000030
+DATA 4 0x020e0750 0x00020000
+
+DATA 4 0x020e0758 0x00000000
+DATA 4 0x020e0774 0x00020000
+DATA 4 0x020e078c 0x00000030
+DATA 4 0x020e0798 0x000C0000
+
+DATA 4 0x021b081c 0x33333333
+DATA 4 0x021b0820 0x33333333
+DATA 4 0x021b0824 0x33333333
+DATA 4 0x021b0828 0x33333333
+
+DATA 4 0x021b481c 0x33333333
+DATA 4 0x021b4820 0x33333333
+DATA 4 0x021b4824 0x33333333
+DATA 4 0x021b4828 0x33333333
+
+DATA 4 0x021b0018 0x00081740
+
+DATA 4 0x021b001c 0x00008000
+DATA 4 0x021b000c 0x555A7975
+DATA 4 0x021b0010 0xFF538E64
+DATA 4 0x021b0014 0x01FF00DB
+DATA 4 0x021b002c 0x000026D2
+
+DATA 4 0x021b0030 0x005B0E21
+DATA 4 0x021b0008 0x09444040
+DATA 4 0x021b0004 0x00025576
+DATA 4 0x021b0040 0x00000027
+DATA 4 0x021b0000 0x831A0000
+
+DATA 4 0x021b001c 0x04088032
+DATA 4 0x021b001c 0x0408803A
+DATA 4 0x021b001c 0x00008033
+DATA 4 0x021b001c 0x0000803B
+DATA 4 0x021b001c 0x00428031
+DATA 4 0x021b001c 0x00428039
+DATA 4 0x021b001c 0x09408030
+DATA 4 0x021b001c 0x09408038
+
+DATA 4 0x021b001c 0x04008040
+DATA 4 0x021b001c 0x04008048
+DATA 4 0x021b0800 0xA1380003
+DATA 4 0x021b4800 0xA1380003
+DATA 4 0x021b0020 0x00005800
+DATA 4 0x021b0818 0x00022227
+DATA 4 0x021b4818 0x00022227
+
+DATA 4 0x021b083c 0x434B0350
+DATA 4 0x021b0840 0x034C0359
+DATA 4 0x021b483c 0x434B0350
+DATA 4 0x021b4840 0x03650348
+DATA 4 0x021b0848 0x4436383B
+DATA 4 0x021b4848 0x39393341
+DATA 4 0x021b0850 0x35373933
+DATA 4 0x021b4850 0x48254A36
+
+DATA 4 0x021b080c 0x001F001F
+DATA 4 0x021b0810 0x001F001F
+
+DATA 4 0x021b480c 0x00440044
+DATA 4 0x021b4810 0x00440044
+
+DATA 4 0x021b08b8 0x00000800
+DATA 4 0x021b48b8 0x00000800
+
+DATA 4 0x021b001c 0x00000000
+DATA 4 0x021b0404 0x00011006
+
+# set the default clock gate to save power
+DATA 4 0x020c4068 0x00C03F3F
+DATA 4 0x020c406c 0x0030FC00
+DATA 4 0x020c4070 0x0FFFC000
+DATA 4 0x020c4074 0x3FF00000
+DATA 4 0x020c4078 0x00FFF300
+DATA 4 0x020c407c 0x0F0000C3
+DATA 4 0x020c4080 0x000003FF
+
+# enable AXI cache for VDOA/VPU/IPU
+DATA 4 0x020e0010 0xF00000FF
+# set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7
+DATA 4 0x020e0018 0x007F007F
+DATA 4 0x020e001c 0x007F007F
Index: freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/mx6qsabrelite.c
===================================================================
--- /dev/null
+++ freescale-u-boot-imx.git/board/freescale/mx6qsabrelite/mx6qsabrelite.c
@@ -0,0 +1,150 @@ 
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/mx6x_pins.h>
+#include <asm/arch/iomux-v3.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |               \
+       PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
+
+       return 0;
+}
+
+iomux_v3_cfg_t uart2_pads[] = {
+       MX6Q_PAD_EIM_D26__UART2_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6Q_PAD_EIM_D27__UART2_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+iomux_v3_cfg_t usdhc3_pads[] = {
+       MX6Q_PAD_SD3_CLK__USDHC3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_CMD__USDHC3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT5__GPIO_7_0    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+iomux_v3_cfg_t usdhc4_pads[] = {
+       MX6Q_PAD_SD4_CLK__USDHC4_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_CMD__USDHC4_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_NANDF_D6__GPIO_2_6    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+static void setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg usdhc_cfg[2] = {
+       {USDHC3_BASE_ADDR, 1},
+       {USDHC4_BASE_ADDR, 1},
+};
+
+int board_mmc_getcd(u8 *cd, struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+
+       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
+               gpio_direction_input(192); /*GPIO7_0*/
+               *cd = gpio_get_value(192);
+       } else {
+               gpio_direction_input(38); /*GPIO2_6*/
+               *cd = gpio_get_value(38);
+       }
+
+       return 0;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       s32 status = 0;
+       u32 index = 0;
+
+       for (index = 0; index < CONFIG_SYS_FSL_USDHC_NUM; ++index) {
+               switch (index) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) then supported by the board (%d)\n",
+                               index + 1, CONFIG_SYS_FSL_USDHC_NUM);
+                       return status;
+               }
+
+               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+       }
+
+       return status;
+}
+#endif
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       puts("Board: MX6Q-Sabre Lite\n");
+
+       return 0;
+}
Index: freescale-u-boot-imx.git/boards.cfg
===================================================================
--- freescale-u-boot-imx.git.orig/boards.cfg
+++ freescale-u-boot-imx.git/boards.cfg
@@ -193,6 +193,7 @@  mx53loco                     arm
 mx53smd                      arm         armv7       mx53smd             freescale      mx5		mx53smd:IMX_CONFIG=board/freescale/mx53smd/imximage.cfg
 vision2                      arm         armv7       vision2             ttcontrol      mx5		vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg
 mx6qarm2                     arm         armv7       mx6qarm2            freescale      mx6		mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg
+mx6qsabrelite                arm         armv7       mx6qsabrelite       freescale      mx6		mx6qsabrelite:IMX_CONFIG=board/freescale/mx6qsabrelite/imximage.cfg
 cm_t35                       arm         armv7       cm_t35              -              omap3
 omap3_overo                  arm         armv7       overo               -              omap3
 omap3_pandora                arm         armv7       pandora             -              omap3
Index: freescale-u-boot-imx.git/include/configs/mx6qsabrelite.h
===================================================================
--- /dev/null
+++ freescale-u-boot-imx.git/include/configs/mx6qsabrelite.h
@@ -0,0 +1,162 @@ 
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX6Q Sabre Lite board.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_MX6Q
+#define CONFIG_SYS_MX6_HCLK            24000000
+#define CONFIG_SYS_MX6_CLK32           32768
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#include <asm/arch/imx-regs.h>
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
+
+#define CONFIG_ARCH_CPU_INIT
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_MXC_GPIO
+
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE           UART2_BASE
+
+/* MMC Configs */
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      0
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_CONS_INDEX              1
+#define CONFIG_BAUDRATE                        115200
+#define CONFIG_SYS_BAUDRATE_TABLE      {9600, 19200, 38400, 57600, 115200}
+
+/* Command definition */
+#include <config_cmd_default.h>
+
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+#define CONFIG_BOOTDELAY               3
+
+#define CONFIG_LOADADDR                        0x10800000
+#define CONFIG_SYS_TEXT_BASE           0x17800000
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "script=boot.scr\0" \
+       "uimage=uImage\0" \
+       "console=ttymxc3\0" \
+       "mmcdev=0\0" \
+       "mmcpart=2\0" \
+       "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+       "mmcargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "loadbootscript=" \
+               "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "bootm\0" \
+       "netargs=setenv bootargs console=${console},${baudrate} " \
+               "root=/dev/nfs " \
+               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+       "netboot=echo Booting from net ...; " \
+               "run netargs; " \
+               "dhcp ${uimage}; bootm\0" \
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev};" \
+       "if mmc rescan ${mmcdev}; then " \
+               "if run loadbootscript; then " \
+                       "run bootscript; " \
+               "else " \
+                       "if run loaduimage; then " \
+                               "run mmcboot; " \
+                       "else run netboot; " \
+                       "fi; " \
+               "fi; " \
+       "else run netboot; fi"
+
+#define CONFIG_ARP_TIMEOUT     200UL
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+#define CONFIG_SYS_PROMPT              "MX6QSABRELITE U-Boot > "
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_CBSIZE              256
+
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+#define CONFIG_SYS_MEMTEST_START       0x10000000
+#define CONFIG_SYS_MEMTEST_END         0x10010000
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+#define CONFIG_SYS_HZ                  1000
+
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_STACKSIZE               (128 * 1024)
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           1
+#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
+#define PHYS_SDRAM_SIZE                        (1u * 1024 * 1024 * 1024)
+
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+/* FLASH and environment organization */
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
+#define CONFIG_ENV_SIZE                        (8 * 1024)
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0
+
+#define CONFIG_OF_LIBFDT
+
+#endif                         /* __CONFIG_H */
Index: freescale-u-boot-imx.git/doc/README.mx6qsabrelite
===================================================================
--- /dev/null
+++ freescale-u-boot-imx.git/doc/README.mx6qsabrelite
@@ -0,0 +1,67 @@ 
+U-Boot for the Freescale i.MX6q SabreLite board
+
+This file contains information for the port of U-Boot to the Freescale
+i.MX6q SabreLite board.
+
+1. Boot source, boot from SD card
+---------------------------------
+
+The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports
+boot from SD card only. However, by default, the early version of SabreLite
+boards boot from the SPI NOR flash. These boards need to be reflashed with
+a small SD card loader to support boot from SD card. This small SD card loader
+will be flashed into the SPI NOR. The board will still boot from SPI NOR, but
+the loader will in turn request the BootROM to load the U-Boot from SD card.
+At the moment of writing, please check with Freescale on the availablity of
+this small SD loader binary.
+
+To update the SPI-NOR on the SabreLite board without the Freescale
+manufacturing tool use the following procedure:
+
+1. Write this SD card loader onto a large SD card using:
+
+ sudo dd if=MX6_SPI_to_SD_loader.bin of=/dev/sXx
+
+Note: Replace sXx with the device representing the SD card in your system.
+
+Note: This writes SD card loader at address 0
+
+2. Put this SD card into the slot for the large SD card (SD3 on the bottom of
+the board)
+
+3. Power-up the SabreLite, press 'space' to enter command mode in the U-Boot
+(the default one the board is shipped with, starting from the SPI NOR) and
+enter the following commands:
+
+ MX6Q SABRELITE U-Boot > mmc dev 0
+ MX6Q SABRELITE U-Boot > mmc read 0x10800000 0 200
+ MX6Q SABRELITE U-Boot > sf probe 1
+ MX6Q SABRELITE U-Boot > sf erase 0 0x40000
+ MX6Q SABRELITE U-Boot > sf write 0x10800000 0 0x40000
+
+4. done.
+
+In case you somehow do not succeed with this procedure you will have to use
+the Freescale manufacturing tool in order to reflash the SPI-NOR.
+
+Note: The board now boots from full size SD3 on the bottom of the board. NOT
+      the micro SD4/BOOT slot on the top of the board. I.e. you have to use
+      full size SD cards.
+
+This information is taken from
+
+https://wiki.linaro.org/Boards/MX6QSabreLite
+
+2. Build
+--------
+
+To build U-Boot for the SabreLite board:
+
+ make mx6qsabrelite_config
+ make u-boot.imx
+
+To copy the resulting u-boot.imx to the SD card:
+
+ sudo dd if=u-boot.imx of=/dev/sXx bs=512 seek=2&&sudo sync
+
+Note: Replace sXx with the device representing the SD card in your system.