Message ID | 1391432342-12723-1-git-send-email-dmurphy@ti.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
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/ >
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/ >>
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/ >>> > >
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/ >>>> >>
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 --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/
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