diff mbox

[U-Boot,v2,1/2] common: spl: Add spl sata boot support

Message ID 1391432342-12723-1-git-send-email-dmurphy@ti.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Dan Murphy Feb. 3, 2014, 12:59 p.m. UTC
Add spl_sata to read a fat partition from a bootable SATA
drive.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---

v2 - Removed debug print - http://patchwork.ozlabs.org/patch/314811/

 common/Makefile       |    3 +++
 common/cmd_scsi.c     |    2 ++
 common/spl/Makefile   |    1 +
 common/spl/spl.c      |    5 +++++
 common/spl/spl_sata.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 include/spl.h         |    3 +++
 spl/Makefile          |    1 +
 7 files changed, 64 insertions(+)
 create mode 100644 common/spl/spl_sata.c

Comments

Roger Quadros Feb. 7, 2014, 9:48 a.m. UTC | #1
Hi Dan,

On 02/03/2014 02:59 PM, Dan Murphy wrote:
> Add spl_sata to read a fat partition from a bootable SATA
> drive.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---

I got some check-patch errors with this one.
Once that is fixed you can please add

Reviewed-by: Roger Quadros <rogerq@ti.com>

cheers,
-roger
> 
> v2 - Removed debug print - http://patchwork.ozlabs.org/patch/314811/
> 
>  common/Makefile       |    3 +++
>  common/cmd_scsi.c     |    2 ++
>  common/spl/Makefile   |    1 +
>  common/spl/spl.c      |    5 +++++
>  common/spl/spl_sata.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>  include/spl.h         |    3 +++
>  spl/Makefile          |    1 +
>  7 files changed, 64 insertions(+)
>  create mode 100644 common/spl/spl_sata.c
> 
> diff --git a/common/Makefile b/common/Makefile
> index 4d99ecd..b0f5b62 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -201,6 +201,9 @@ ifdef CONFIG_SPL_USB_HOST_SUPPORT
>  obj-$(CONFIG_SPL_USB_SUPPORT) += usb.o usb_hub.o
>  obj-$(CONFIG_USB_STORAGE) += usb_storage.o
>  endif
> +ifdef CONFIG_SPL_SATA_SUPPORT
> +obj-$(CONFIG_CMD_SCSI) += cmd_scsi.o
> +endif
>  ifneq ($(CONFIG_SPL_NET_SUPPORT),y)
>  obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
>  obj-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
> diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
> index 7b97dc9..b3f7687 100644
> --- a/common/cmd_scsi.c
> +++ b/common/cmd_scsi.c
> @@ -168,7 +168,9 @@ removable:
>  		scsi_curr_dev = -1;
>  
>  	printf("Found %d device(s).\n", scsi_max_devs);
> +#ifndef CONFIG_SPL_BUILD
>  	setenv_ulong("scsidevs", scsi_max_devs);
> +#endif
>  }
>  
>  int scsi_get_disk_count(void)
> diff --git a/common/spl/Makefile b/common/spl/Makefile
> index 65a1484f..64569c2 100644
> --- a/common/spl/Makefile
> +++ b/common/spl/Makefile
> @@ -18,4 +18,5 @@ obj-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o
>  obj-$(CONFIG_SPL_MMC_SUPPORT) += spl_mmc.o
>  obj-$(CONFIG_SPL_USB_SUPPORT) += spl_usb.o
>  obj-$(CONFIG_SPL_FAT_SUPPORT) += spl_fat.o
> +obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o
>  endif
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 0645cee..774fdad 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -210,6 +210,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>  		spl_usb_load_image();
>  		break;
>  #endif
> +#ifdef CONFIG_SPL_SATA_SUPPORT
> +	case BOOT_DEVICE_SATA:
> +		spl_sata_load_image();
> +		break;
> +#endif
>  	default:
>  		debug("SPL: Un-supported Boot Device\n");
>  		hang();
> diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
> new file mode 100644
> index 0000000..2e7adca
> --- /dev/null
> +++ b/common/spl/spl_sata.c
> @@ -0,0 +1,49 @@
> +/*
> + * (C) Copyright 2013
> + * Texas Instruments, <www.ti.com>
> + *
> + * Dan Murphy <dmurphy@ti.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + *
> + * Derived work from spl_usb.c
> + */
> +
> +#include <common.h>
> +#include <spl.h>
> +#include <asm/u-boot.h>
> +#include <sata.h>
> +#include <fat.h>
> +#include <version.h>
> +#include <image.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +void spl_sata_load_image(void)
> +{
> +	int err;
> +	block_dev_desc_t *stor_dev;
> +
> +	err = init_sata(CONFIG_SPL_SATA_BOOT_DEVICE);
> +	if (err) {
> +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> +		printf("spl: sata init failed: err - %d\n", err);
> +#endif
> +		hang();
> +	} else {
> +		/* try to recognize storage devices immediately */
> +		stor_dev = scsi_get_dev(0);
> +	}
> +
> +#ifdef CONFIG_SPL_OS_BOOT
> +	if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
> +									CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
> +#endif
> +	err = spl_load_image_fat(stor_dev,
> +				CONFIG_SYS_SATA_FAT_BOOT_PARTITION,
> +				CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
> +	if (err) {
> +		puts("Error loading sata device\n");
> +		hang();
> +	}
> +}
> diff --git a/include/spl.h b/include/spl.h
> index 5e24856..ee09fb6 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -64,6 +64,9 @@ void spl_net_load_image(const char *device);
>  /* USB SPL functions */
>  void spl_usb_load_image(void);
>  
> +/* SATA SPL functions */
> +void spl_sata_load_image(void);
> +
>  /* SPL FAT image functions */
>  int spl_load_image_fat(block_dev_desc_t *block_dev, int partition, const char *filename);
>  int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition);
> diff --git a/spl/Makefile b/spl/Makefile
> index 4143e38..28fcfdd 100644
> --- a/spl/Makefile
> +++ b/spl/Makefile
> @@ -85,6 +85,7 @@ LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
>  LIBS-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
>  LIBS-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
>  LIBS-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
> +LIBS-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
>  
>  ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
>  LIBS-y += arch/$(ARCH)/imx-common/
>
Dan Murphy Feb. 7, 2014, 2:11 p.m. UTC | #2
Roger

On 02/07/2014 03:48 AM, Roger Quadros wrote:
> Hi Dan,
>
> On 02/03/2014 02:59 PM, Dan Murphy wrote:
>> Add spl_sata to read a fat partition from a bootable SATA
>> drive.
>>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> ---
> I got some check-patch errors with this one.
> Once that is fixed you can please add

Thanks for the review

Checkpatch errors or warnings?

When I ran checkpatch before submitting I did have 2 warnings but these should be
acceptable.

I will let the maintainer decide on the acceptability of the two warnings since these warnings are consistent
with the spl_mmc and spl_usb files

WARNING: suspect code indent for conditional statements (8, 8)
#122: FILE: common/spl/spl_sata.c:39:
+    if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
[...]
+    err = spl_load_image_fat(stor_dev,

WARNING: line over 80 characters
#123: FILE: common/spl/spl_sata.c:40:
+                                    CONFIG_SYS_SATA_FAT_BOOT_PARTITION))

total: 0 errors, 2 warnings, 99 lines checked


>
> Reviewed-by: Roger Quadros <rogerq@ti.com>
>
> cheers,
> -roger
>> v2 - Removed debug print - http://patchwork.ozlabs.org/patch/314811/
>>
>>  common/Makefile       |    3 +++
>>  common/cmd_scsi.c     |    2 ++
>>  common/spl/Makefile   |    1 +
>>  common/spl/spl.c      |    5 +++++
>>  common/spl/spl_sata.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  include/spl.h         |    3 +++
>>  spl/Makefile          |    1 +
>>  7 files changed, 64 insertions(+)
>>  create mode 100644 common/spl/spl_sata.c
>>
>> diff --git a/common/Makefile b/common/Makefile
>> index 4d99ecd..b0f5b62 100644
>> --- a/common/Makefile
>> +++ b/common/Makefile
>> @@ -201,6 +201,9 @@ ifdef CONFIG_SPL_USB_HOST_SUPPORT
>>  obj-$(CONFIG_SPL_USB_SUPPORT) += usb.o usb_hub.o
>>  obj-$(CONFIG_USB_STORAGE) += usb_storage.o
>>  endif
>> +ifdef CONFIG_SPL_SATA_SUPPORT
>> +obj-$(CONFIG_CMD_SCSI) += cmd_scsi.o
>> +endif
>>  ifneq ($(CONFIG_SPL_NET_SUPPORT),y)
>>  obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
>>  obj-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
>> diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
>> index 7b97dc9..b3f7687 100644
>> --- a/common/cmd_scsi.c
>> +++ b/common/cmd_scsi.c
>> @@ -168,7 +168,9 @@ removable:
>>  		scsi_curr_dev = -1;
>>  
>>  	printf("Found %d device(s).\n", scsi_max_devs);
>> +#ifndef CONFIG_SPL_BUILD
>>  	setenv_ulong("scsidevs", scsi_max_devs);
>> +#endif
>>  }
>>  
>>  int scsi_get_disk_count(void)
>> diff --git a/common/spl/Makefile b/common/spl/Makefile
>> index 65a1484f..64569c2 100644
>> --- a/common/spl/Makefile
>> +++ b/common/spl/Makefile
>> @@ -18,4 +18,5 @@ obj-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o
>>  obj-$(CONFIG_SPL_MMC_SUPPORT) += spl_mmc.o
>>  obj-$(CONFIG_SPL_USB_SUPPORT) += spl_usb.o
>>  obj-$(CONFIG_SPL_FAT_SUPPORT) += spl_fat.o
>> +obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o
>>  endif
>> diff --git a/common/spl/spl.c b/common/spl/spl.c
>> index 0645cee..774fdad 100644
>> --- a/common/spl/spl.c
>> +++ b/common/spl/spl.c
>> @@ -210,6 +210,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>>  		spl_usb_load_image();
>>  		break;
>>  #endif
>> +#ifdef CONFIG_SPL_SATA_SUPPORT
>> +	case BOOT_DEVICE_SATA:
>> +		spl_sata_load_image();
>> +		break;
>> +#endif
>>  	default:
>>  		debug("SPL: Un-supported Boot Device\n");
>>  		hang();
>> diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
>> new file mode 100644
>> index 0000000..2e7adca
>> --- /dev/null
>> +++ b/common/spl/spl_sata.c
>> @@ -0,0 +1,49 @@
>> +/*
>> + * (C) Copyright 2013
>> + * Texas Instruments, <www.ti.com>
>> + *
>> + * Dan Murphy <dmurphy@ti.com>
>> + *
>> + * SPDX-License-Identifier:	GPL-2.0+
>> + *
>> + * Derived work from spl_usb.c
>> + */
>> +
>> +#include <common.h>
>> +#include <spl.h>
>> +#include <asm/u-boot.h>
>> +#include <sata.h>
>> +#include <fat.h>
>> +#include <version.h>
>> +#include <image.h>
>> +
>> +DECLARE_GLOBAL_DATA_PTR;
>> +
>> +void spl_sata_load_image(void)
>> +{
>> +	int err;
>> +	block_dev_desc_t *stor_dev;
>> +
>> +	err = init_sata(CONFIG_SPL_SATA_BOOT_DEVICE);
>> +	if (err) {
>> +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
>> +		printf("spl: sata init failed: err - %d\n", err);
>> +#endif
>> +		hang();
>> +	} else {
>> +		/* try to recognize storage devices immediately */
>> +		stor_dev = scsi_get_dev(0);
>> +	}
>> +
>> +#ifdef CONFIG_SPL_OS_BOOT
>> +	if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
>> +									CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
>> +#endif
>> +	err = spl_load_image_fat(stor_dev,
>> +				CONFIG_SYS_SATA_FAT_BOOT_PARTITION,
>> +				CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
>> +	if (err) {
>> +		puts("Error loading sata device\n");
>> +		hang();
>> +	}
>> +}
>> diff --git a/include/spl.h b/include/spl.h
>> index 5e24856..ee09fb6 100644
>> --- a/include/spl.h
>> +++ b/include/spl.h
>> @@ -64,6 +64,9 @@ void spl_net_load_image(const char *device);
>>  /* USB SPL functions */
>>  void spl_usb_load_image(void);
>>  
>> +/* SATA SPL functions */
>> +void spl_sata_load_image(void);
>> +
>>  /* SPL FAT image functions */
>>  int spl_load_image_fat(block_dev_desc_t *block_dev, int partition, const char *filename);
>>  int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition);
>> diff --git a/spl/Makefile b/spl/Makefile
>> index 4143e38..28fcfdd 100644
>> --- a/spl/Makefile
>> +++ b/spl/Makefile
>> @@ -85,6 +85,7 @@ LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
>>  LIBS-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
>>  LIBS-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
>>  LIBS-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
>> +LIBS-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
>>  
>>  ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
>>  LIBS-y += arch/$(ARCH)/imx-common/
>>
Roger Quadros Feb. 10, 2014, 10:40 a.m. UTC | #3
Dan,

On 02/07/2014 04:11 PM, Dan Murphy wrote:
> Roger
> 
> On 02/07/2014 03:48 AM, Roger Quadros wrote:
>> Hi Dan,
>>
>> On 02/03/2014 02:59 PM, Dan Murphy wrote:
>>> Add spl_sata to read a fat partition from a bootable SATA
>>> drive.
>>>
>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>>> ---
>> I got some check-patch errors with this one.
>> Once that is fixed you can please add
> 
> Thanks for the review
> 
> Checkpatch errors or warnings?

Right, warnings not errors.

cheers,
-roger

> 
> When I ran checkpatch before submitting I did have 2 warnings but these should be
> acceptable.
> 
> I will let the maintainer decide on the acceptability of the two warnings since these warnings are consistent
> with the spl_mmc and spl_usb files
> 
> WARNING: suspect code indent for conditional statements (8, 8)
> #122: FILE: common/spl/spl_sata.c:39:
> +    if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
> [...]
> +    err = spl_load_image_fat(stor_dev,
> 
> WARNING: line over 80 characters
> #123: FILE: common/spl/spl_sata.c:40:
> +                                    CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
> 
> total: 0 errors, 2 warnings, 99 lines checked
> 
> 
>>
>> Reviewed-by: Roger Quadros <rogerq@ti.com>
>>
>> cheers,
>> -roger
>>> v2 - Removed debug print - http://patchwork.ozlabs.org/patch/314811/
>>>
>>>  common/Makefile       |    3 +++
>>>  common/cmd_scsi.c     |    2 ++
>>>  common/spl/Makefile   |    1 +
>>>  common/spl/spl.c      |    5 +++++
>>>  common/spl/spl_sata.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>>>  include/spl.h         |    3 +++
>>>  spl/Makefile          |    1 +
>>>  7 files changed, 64 insertions(+)
>>>  create mode 100644 common/spl/spl_sata.c
>>>
>>> diff --git a/common/Makefile b/common/Makefile
>>> index 4d99ecd..b0f5b62 100644
>>> --- a/common/Makefile
>>> +++ b/common/Makefile
>>> @@ -201,6 +201,9 @@ ifdef CONFIG_SPL_USB_HOST_SUPPORT
>>>  obj-$(CONFIG_SPL_USB_SUPPORT) += usb.o usb_hub.o
>>>  obj-$(CONFIG_USB_STORAGE) += usb_storage.o
>>>  endif
>>> +ifdef CONFIG_SPL_SATA_SUPPORT
>>> +obj-$(CONFIG_CMD_SCSI) += cmd_scsi.o
>>> +endif
>>>  ifneq ($(CONFIG_SPL_NET_SUPPORT),y)
>>>  obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
>>>  obj-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
>>> diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
>>> index 7b97dc9..b3f7687 100644
>>> --- a/common/cmd_scsi.c
>>> +++ b/common/cmd_scsi.c
>>> @@ -168,7 +168,9 @@ removable:
>>>  		scsi_curr_dev = -1;
>>>  
>>>  	printf("Found %d device(s).\n", scsi_max_devs);
>>> +#ifndef CONFIG_SPL_BUILD
>>>  	setenv_ulong("scsidevs", scsi_max_devs);
>>> +#endif
>>>  }
>>>  
>>>  int scsi_get_disk_count(void)
>>> diff --git a/common/spl/Makefile b/common/spl/Makefile
>>> index 65a1484f..64569c2 100644
>>> --- a/common/spl/Makefile
>>> +++ b/common/spl/Makefile
>>> @@ -18,4 +18,5 @@ obj-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o
>>>  obj-$(CONFIG_SPL_MMC_SUPPORT) += spl_mmc.o
>>>  obj-$(CONFIG_SPL_USB_SUPPORT) += spl_usb.o
>>>  obj-$(CONFIG_SPL_FAT_SUPPORT) += spl_fat.o
>>> +obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o
>>>  endif
>>> diff --git a/common/spl/spl.c b/common/spl/spl.c
>>> index 0645cee..774fdad 100644
>>> --- a/common/spl/spl.c
>>> +++ b/common/spl/spl.c
>>> @@ -210,6 +210,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>>>  		spl_usb_load_image();
>>>  		break;
>>>  #endif
>>> +#ifdef CONFIG_SPL_SATA_SUPPORT
>>> +	case BOOT_DEVICE_SATA:
>>> +		spl_sata_load_image();
>>> +		break;
>>> +#endif
>>>  	default:
>>>  		debug("SPL: Un-supported Boot Device\n");
>>>  		hang();
>>> diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
>>> new file mode 100644
>>> index 0000000..2e7adca
>>> --- /dev/null
>>> +++ b/common/spl/spl_sata.c
>>> @@ -0,0 +1,49 @@
>>> +/*
>>> + * (C) Copyright 2013
>>> + * Texas Instruments, <www.ti.com>
>>> + *
>>> + * Dan Murphy <dmurphy@ti.com>
>>> + *
>>> + * SPDX-License-Identifier:	GPL-2.0+
>>> + *
>>> + * Derived work from spl_usb.c
>>> + */
>>> +
>>> +#include <common.h>
>>> +#include <spl.h>
>>> +#include <asm/u-boot.h>
>>> +#include <sata.h>
>>> +#include <fat.h>
>>> +#include <version.h>
>>> +#include <image.h>
>>> +
>>> +DECLARE_GLOBAL_DATA_PTR;
>>> +
>>> +void spl_sata_load_image(void)
>>> +{
>>> +	int err;
>>> +	block_dev_desc_t *stor_dev;
>>> +
>>> +	err = init_sata(CONFIG_SPL_SATA_BOOT_DEVICE);
>>> +	if (err) {
>>> +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
>>> +		printf("spl: sata init failed: err - %d\n", err);
>>> +#endif
>>> +		hang();
>>> +	} else {
>>> +		/* try to recognize storage devices immediately */
>>> +		stor_dev = scsi_get_dev(0);
>>> +	}
>>> +
>>> +#ifdef CONFIG_SPL_OS_BOOT
>>> +	if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
>>> +									CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
>>> +#endif
>>> +	err = spl_load_image_fat(stor_dev,
>>> +				CONFIG_SYS_SATA_FAT_BOOT_PARTITION,
>>> +				CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
>>> +	if (err) {
>>> +		puts("Error loading sata device\n");
>>> +		hang();
>>> +	}
>>> +}
>>> diff --git a/include/spl.h b/include/spl.h
>>> index 5e24856..ee09fb6 100644
>>> --- a/include/spl.h
>>> +++ b/include/spl.h
>>> @@ -64,6 +64,9 @@ void spl_net_load_image(const char *device);
>>>  /* USB SPL functions */
>>>  void spl_usb_load_image(void);
>>>  
>>> +/* SATA SPL functions */
>>> +void spl_sata_load_image(void);
>>> +
>>>  /* SPL FAT image functions */
>>>  int spl_load_image_fat(block_dev_desc_t *block_dev, int partition, const char *filename);
>>>  int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition);
>>> diff --git a/spl/Makefile b/spl/Makefile
>>> index 4143e38..28fcfdd 100644
>>> --- a/spl/Makefile
>>> +++ b/spl/Makefile
>>> @@ -85,6 +85,7 @@ LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
>>>  LIBS-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
>>>  LIBS-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
>>>  LIBS-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
>>> +LIBS-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
>>>  
>>>  ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
>>>  LIBS-y += arch/$(ARCH)/imx-common/
>>>
> 
>
Dan Murphy Feb. 12, 2014, 2:10 p.m. UTC | #4
Bump

On 02/10/2014 04:40 AM, Roger Quadros wrote:
> Dan,
>
> On 02/07/2014 04:11 PM, Dan Murphy wrote:
>> Roger
>>
>> On 02/07/2014 03:48 AM, Roger Quadros wrote:
>>> Hi Dan,
>>>
>>> On 02/03/2014 02:59 PM, Dan Murphy wrote:
>>>> Add spl_sata to read a fat partition from a bootable SATA
>>>> drive.
>>>>
>>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>>>> ---
>>> I got some check-patch errors with this one.
>>> Once that is fixed you can please add
>> Thanks for the review
>>
>> Checkpatch errors or warnings?
> Right, warnings not errors.
>
> cheers,
> -roger
>
>> When I ran checkpatch before submitting I did have 2 warnings but these should be
>> acceptable.
>>
>> I will let the maintainer decide on the acceptability of the two warnings since these warnings are consistent
>> with the spl_mmc and spl_usb files
>>
>> WARNING: suspect code indent for conditional statements (8, 8)
>> #122: FILE: common/spl/spl_sata.c:39:
>> +    if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
>> [...]
>> +    err = spl_load_image_fat(stor_dev,
>>
>> WARNING: line over 80 characters
>> #123: FILE: common/spl/spl_sata.c:40:
>> +                                    CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
>>
>> total: 0 errors, 2 warnings, 99 lines checked
>>
>>
>>> Reviewed-by: Roger Quadros <rogerq@ti.com>
>>>
>>> cheers,
>>> -roger
>>>> v2 - Removed debug print - http://patchwork.ozlabs.org/patch/314811/
>>>>
>>>>  common/Makefile       |    3 +++
>>>>  common/cmd_scsi.c     |    2 ++
>>>>  common/spl/Makefile   |    1 +
>>>>  common/spl/spl.c      |    5 +++++
>>>>  common/spl/spl_sata.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>>>>  include/spl.h         |    3 +++
>>>>  spl/Makefile          |    1 +
>>>>  7 files changed, 64 insertions(+)
>>>>  create mode 100644 common/spl/spl_sata.c
>>>>
>>>> diff --git a/common/Makefile b/common/Makefile
>>>> index 4d99ecd..b0f5b62 100644
>>>> --- a/common/Makefile
>>>> +++ b/common/Makefile
>>>> @@ -201,6 +201,9 @@ ifdef CONFIG_SPL_USB_HOST_SUPPORT
>>>>  obj-$(CONFIG_SPL_USB_SUPPORT) += usb.o usb_hub.o
>>>>  obj-$(CONFIG_USB_STORAGE) += usb_storage.o
>>>>  endif
>>>> +ifdef CONFIG_SPL_SATA_SUPPORT
>>>> +obj-$(CONFIG_CMD_SCSI) += cmd_scsi.o
>>>> +endif
>>>>  ifneq ($(CONFIG_SPL_NET_SUPPORT),y)
>>>>  obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
>>>>  obj-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
>>>> diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
>>>> index 7b97dc9..b3f7687 100644
>>>> --- a/common/cmd_scsi.c
>>>> +++ b/common/cmd_scsi.c
>>>> @@ -168,7 +168,9 @@ removable:
>>>>  		scsi_curr_dev = -1;
>>>>  
>>>>  	printf("Found %d device(s).\n", scsi_max_devs);
>>>> +#ifndef CONFIG_SPL_BUILD
>>>>  	setenv_ulong("scsidevs", scsi_max_devs);
>>>> +#endif
>>>>  }
>>>>  
>>>>  int scsi_get_disk_count(void)
>>>> diff --git a/common/spl/Makefile b/common/spl/Makefile
>>>> index 65a1484f..64569c2 100644
>>>> --- a/common/spl/Makefile
>>>> +++ b/common/spl/Makefile
>>>> @@ -18,4 +18,5 @@ obj-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o
>>>>  obj-$(CONFIG_SPL_MMC_SUPPORT) += spl_mmc.o
>>>>  obj-$(CONFIG_SPL_USB_SUPPORT) += spl_usb.o
>>>>  obj-$(CONFIG_SPL_FAT_SUPPORT) += spl_fat.o
>>>> +obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o
>>>>  endif
>>>> diff --git a/common/spl/spl.c b/common/spl/spl.c
>>>> index 0645cee..774fdad 100644
>>>> --- a/common/spl/spl.c
>>>> +++ b/common/spl/spl.c
>>>> @@ -210,6 +210,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
>>>>  		spl_usb_load_image();
>>>>  		break;
>>>>  #endif
>>>> +#ifdef CONFIG_SPL_SATA_SUPPORT
>>>> +	case BOOT_DEVICE_SATA:
>>>> +		spl_sata_load_image();
>>>> +		break;
>>>> +#endif
>>>>  	default:
>>>>  		debug("SPL: Un-supported Boot Device\n");
>>>>  		hang();
>>>> diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
>>>> new file mode 100644
>>>> index 0000000..2e7adca
>>>> --- /dev/null
>>>> +++ b/common/spl/spl_sata.c
>>>> @@ -0,0 +1,49 @@
>>>> +/*
>>>> + * (C) Copyright 2013
>>>> + * Texas Instruments, <www.ti.com>
>>>> + *
>>>> + * Dan Murphy <dmurphy@ti.com>
>>>> + *
>>>> + * SPDX-License-Identifier:	GPL-2.0+
>>>> + *
>>>> + * Derived work from spl_usb.c
>>>> + */
>>>> +
>>>> +#include <common.h>
>>>> +#include <spl.h>
>>>> +#include <asm/u-boot.h>
>>>> +#include <sata.h>
>>>> +#include <fat.h>
>>>> +#include <version.h>
>>>> +#include <image.h>
>>>> +
>>>> +DECLARE_GLOBAL_DATA_PTR;
>>>> +
>>>> +void spl_sata_load_image(void)
>>>> +{
>>>> +	int err;
>>>> +	block_dev_desc_t *stor_dev;
>>>> +
>>>> +	err = init_sata(CONFIG_SPL_SATA_BOOT_DEVICE);
>>>> +	if (err) {
>>>> +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
>>>> +		printf("spl: sata init failed: err - %d\n", err);
>>>> +#endif
>>>> +		hang();
>>>> +	} else {
>>>> +		/* try to recognize storage devices immediately */
>>>> +		stor_dev = scsi_get_dev(0);
>>>> +	}
>>>> +
>>>> +#ifdef CONFIG_SPL_OS_BOOT
>>>> +	if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
>>>> +									CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
>>>> +#endif
>>>> +	err = spl_load_image_fat(stor_dev,
>>>> +				CONFIG_SYS_SATA_FAT_BOOT_PARTITION,
>>>> +				CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
>>>> +	if (err) {
>>>> +		puts("Error loading sata device\n");
>>>> +		hang();
>>>> +	}
>>>> +}
>>>> diff --git a/include/spl.h b/include/spl.h
>>>> index 5e24856..ee09fb6 100644
>>>> --- a/include/spl.h
>>>> +++ b/include/spl.h
>>>> @@ -64,6 +64,9 @@ void spl_net_load_image(const char *device);
>>>>  /* USB SPL functions */
>>>>  void spl_usb_load_image(void);
>>>>  
>>>> +/* SATA SPL functions */
>>>> +void spl_sata_load_image(void);
>>>> +
>>>>  /* SPL FAT image functions */
>>>>  int spl_load_image_fat(block_dev_desc_t *block_dev, int partition, const char *filename);
>>>>  int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition);
>>>> diff --git a/spl/Makefile b/spl/Makefile
>>>> index 4143e38..28fcfdd 100644
>>>> --- a/spl/Makefile
>>>> +++ b/spl/Makefile
>>>> @@ -85,6 +85,7 @@ LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
>>>>  LIBS-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
>>>>  LIBS-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
>>>>  LIBS-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
>>>> +LIBS-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
>>>>  
>>>>  ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
>>>>  LIBS-y += arch/$(ARCH)/imx-common/
>>>>
>>
Tom Rini Feb. 19, 2014, 3:49 p.m. UTC | #5
On Mon, Feb 03, 2014 at 06:59:01AM -0600, Dan Murphy wrote:

> Add spl_sata to read a fat partition from a bootable SATA
> drive.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> Reviewed-by: Roger Quadros <rogerq@ti.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/common/Makefile b/common/Makefile
index 4d99ecd..b0f5b62 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -201,6 +201,9 @@  ifdef CONFIG_SPL_USB_HOST_SUPPORT
 obj-$(CONFIG_SPL_USB_SUPPORT) += usb.o usb_hub.o
 obj-$(CONFIG_USB_STORAGE) += usb_storage.o
 endif
+ifdef CONFIG_SPL_SATA_SUPPORT
+obj-$(CONFIG_CMD_SCSI) += cmd_scsi.o
+endif
 ifneq ($(CONFIG_SPL_NET_SUPPORT),y)
 obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
 obj-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index 7b97dc9..b3f7687 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -168,7 +168,9 @@  removable:
 		scsi_curr_dev = -1;
 
 	printf("Found %d device(s).\n", scsi_max_devs);
+#ifndef CONFIG_SPL_BUILD
 	setenv_ulong("scsidevs", scsi_max_devs);
+#endif
 }
 
 int scsi_get_disk_count(void)
diff --git a/common/spl/Makefile b/common/spl/Makefile
index 65a1484f..64569c2 100644
--- a/common/spl/Makefile
+++ b/common/spl/Makefile
@@ -18,4 +18,5 @@  obj-$(CONFIG_SPL_NET_SUPPORT) += spl_net.o
 obj-$(CONFIG_SPL_MMC_SUPPORT) += spl_mmc.o
 obj-$(CONFIG_SPL_USB_SUPPORT) += spl_usb.o
 obj-$(CONFIG_SPL_FAT_SUPPORT) += spl_fat.o
+obj-$(CONFIG_SPL_SATA_SUPPORT) += spl_sata.o
 endif
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 0645cee..774fdad 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -210,6 +210,11 @@  void board_init_r(gd_t *dummy1, ulong dummy2)
 		spl_usb_load_image();
 		break;
 #endif
+#ifdef CONFIG_SPL_SATA_SUPPORT
+	case BOOT_DEVICE_SATA:
+		spl_sata_load_image();
+		break;
+#endif
 	default:
 		debug("SPL: Un-supported Boot Device\n");
 		hang();
diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
new file mode 100644
index 0000000..2e7adca
--- /dev/null
+++ b/common/spl/spl_sata.c
@@ -0,0 +1,49 @@ 
+/*
+ * (C) Copyright 2013
+ * Texas Instruments, <www.ti.com>
+ *
+ * Dan Murphy <dmurphy@ti.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Derived work from spl_usb.c
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <asm/u-boot.h>
+#include <sata.h>
+#include <fat.h>
+#include <version.h>
+#include <image.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void spl_sata_load_image(void)
+{
+	int err;
+	block_dev_desc_t *stor_dev;
+
+	err = init_sata(CONFIG_SPL_SATA_BOOT_DEVICE);
+	if (err) {
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+		printf("spl: sata init failed: err - %d\n", err);
+#endif
+		hang();
+	} else {
+		/* try to recognize storage devices immediately */
+		stor_dev = scsi_get_dev(0);
+	}
+
+#ifdef CONFIG_SPL_OS_BOOT
+	if (spl_start_uboot() || spl_load_image_fat_os(stor_dev,
+									CONFIG_SYS_SATA_FAT_BOOT_PARTITION))
+#endif
+	err = spl_load_image_fat(stor_dev,
+				CONFIG_SYS_SATA_FAT_BOOT_PARTITION,
+				CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
+	if (err) {
+		puts("Error loading sata device\n");
+		hang();
+	}
+}
diff --git a/include/spl.h b/include/spl.h
index 5e24856..ee09fb6 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -64,6 +64,9 @@  void spl_net_load_image(const char *device);
 /* USB SPL functions */
 void spl_usb_load_image(void);
 
+/* SATA SPL functions */
+void spl_sata_load_image(void);
+
 /* SPL FAT image functions */
 int spl_load_image_fat(block_dev_desc_t *block_dev, int partition, const char *filename);
 int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition);
diff --git a/spl/Makefile b/spl/Makefile
index 4143e38..28fcfdd 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -85,6 +85,7 @@  LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
 LIBS-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
 LIBS-$(CONFIG_SPL_USB_HOST_SUPPORT) += drivers/usb/host/
 LIBS-$(CONFIG_OMAP_USB_PHY) += drivers/usb/phy/
+LIBS-$(CONFIG_SPL_SATA_SUPPORT) += drivers/block/
 
 ifneq (,$(CONFIG_MX23)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
 LIBS-y += arch/$(ARCH)/imx-common/