[U-Boot] [PATCH v2 02/15] dm: mmc: Allow disabling driver model in SPL

Simon Glass sjg at chromium.org
Thu Jul 13 19:09:49 UTC 2017


Hi Jean-Jacques,

On 6 July 2017 at 08:55, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
> Hi Simon,
>
>
>
> On 04/07/2017 21:31, Simon Glass wrote:
>>
>> At present if U-Boot proper uses driver model for MMC, then SPL has to
>> also. While this is desirable, it places a significant barrier to moving
>> to driver model in some cases. For example, with a space-constrained SPL
>> it may be necessary to enable CONFIG_SPL_OF_PLATDATA which involves
>> adjusting some drivers.
>>
>> Add new SPL versions of the options for DM_MMC, DM_MMC_OPS and BLK. By
>> default these follow their non-SPL versions, but this can be changed by
>> boards which need it.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>> Changes in v2: None
>>
>>   common/spl/spl_mmc.c      |  4 ++--
>>   drivers/block/Kconfig     | 12 ++++++++++++
>>   drivers/block/Makefile    |  4 ++--
>>   drivers/mmc/Kconfig       | 21 +++++++++++++++++++++
>>   drivers/mmc/Makefile      |  4 ++--
>>   drivers/mmc/mmc-uclass.c  |  6 +++---
>>   drivers/mmc/mmc.c         | 28 ++++++++++++++--------------
>>   drivers/mmc/mmc_legacy.c  |  2 +-
>>   drivers/mmc/mmc_private.h |  6 +++---
>>   drivers/mmc/omap_hsmmc.c  | 20 ++++++++++----------
>>   drivers/scsi/scsi.c       |  2 +-
>>   include/blk.h             |  4 ++--
>>   include/mmc.h             | 12 ++++++------
>>   13 files changed, 79 insertions(+), 46 deletions(-)
>>
>> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
>> index 18c1b59b22..953e484e27 100644
>> --- a/common/spl/spl_mmc.c
>> +++ b/common/spl/spl_mmc.c
>> @@ -115,7 +115,7 @@ int spl_mmc_get_device_index(u32 boot_device)
>>     static int spl_mmc_find_device(struct mmc **mmcp, u32 boot_device)
>>   {
>> -#ifdef CONFIG_DM_MMC
>> +#if CONFIG_IS_ENABLED(DM_MMC)
>>         struct udevice *dev;
>>   #endif
>>         int err, mmc_dev;
>> @@ -132,7 +132,7 @@ static int spl_mmc_find_device(struct mmc **mmcp, u32
>> boot_device)
>>                 return err;
>>         }
>>   -#ifdef CONFIG_DM_MMC
>> +#if CONFIG_IS_ENABLED(DM_MMC)
>>         err = uclass_get_device(UCLASS_MMC, mmc_dev, &dev);
>>         if (!err)
>>                 *mmcp = mmc_get_mmc_dev(dev);
>> diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
>> index ca7692d8a5..26760895f9 100644
>> --- a/drivers/block/Kconfig
>> +++ b/drivers/block/Kconfig
>> @@ -10,6 +10,18 @@ config BLK
>>           be partitioned into several areas, called 'partitions' in
>> U-Boot.
>>           A filesystem can be placed in each partition.
>>   +config SPL_BLK
>> +       bool "Support block devices in SPL"
>> +       depends on SPL_DM && BLK
>> +       default y
>> +       help
>> +         Enable support for block devices, such as SCSI, MMC and USB
>> +         flash sticks. These provide a block-level interface which
>> permits
>> +         reading, writing and (in some cases) erasing blocks. Block
>> +         devices often have a partition table which allows the device to
>> +         be partitioned into several areas, called 'partitions' in
>> U-Boot.
>> +         A filesystem can be placed in each partition.
>> +
>
>
>>   config BLOCK_CACHE
>>         bool "Use block device cache"
>>         default n
>> diff --git a/drivers/block/Makefile b/drivers/block/Makefile
>> index a5e7307c97..dea2c15c14 100644
>> --- a/drivers/block/Makefile
>> +++ b/drivers/block/Makefile
>> @@ -5,9 +5,9 @@
>>   # SPDX-License-Identifier:    GPL-2.0+
>>   #
>>   -obj-$(CONFIG_BLK) += blk-uclass.o
>> +obj-$(CONFIG_$(SPL_)BLK) += blk-uclass.o
>>   -ifndef CONFIG_BLK
>> +ifndef CONFIG_$(SPL_)BLK
>>   obj-y += blk_legacy.o
>>   endif
>>   diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>> index 82b8d75686..51a87cdd77 100644
>> --- a/drivers/mmc/Kconfig
>> +++ b/drivers/mmc/Kconfig
>> @@ -30,6 +30,27 @@ config DM_MMC_OPS
>>           option will be removed as soon as all DM_MMC drivers use it, as
>> it
>>           will the only supported behaviour.
>>   +config SPL_DM_MMC
>> +       bool "Enable MMC controllers using Driver Model in SPL"
>> +       depends on SPL_DM && DM_MMC
>> +       default y
>> +       help
>> +         This enables the MultiMediaCard (MMC) uclass which supports MMC
>> and
>> +         Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD,
>> etc.)
>> +         and non-removable (e.g. eMMC chip) devices are supported. These
>> +         appear as block devices in U-Boot and can support filesystems
>> such
>> +         as EXT4 and FAT.
>> +
>> +config SPL_DM_MMC_OPS
>> +       bool "Support MMC controller operations using Driver Model in SPL"
>> +       depends on SPL_DM && DM_MMC_OPS
>> +       default y
>> +       help
>> +         Driver model provides a means of supporting device operations.
>> This
>> +         option moves MMC operations under the control of driver model.
>> The
>> +         option will be removed as soon as all DM_MMC drivers use it, as
>> it
>> +         will the only supported behaviour.
>> +
>>   if MMC
>>     config SPL_MMC_TINY
>> diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
>> index 2d781c38a6..a6becb2309 100644
>> --- a/drivers/mmc/Makefile
>> +++ b/drivers/mmc/Makefile
>> @@ -6,9 +6,9 @@
>>   #
>>     obj-y += mmc.o
>> -obj-$(CONFIG_DM_MMC) += mmc-uclass.o
>> +obj-$(CONFIG_$(SPL_)DM_MMC) += mmc-uclass.o
>>   -ifndef CONFIG_BLK
>> +ifndef CONFIG_$(SPL_)BLK
>>   obj-y += mmc_legacy.o
>>   endif
>
> There are numerous places where #if(n)defCONFIG_BLK is used, should they not
> all be replaced with #if CONFIG_IS_ENABLED(BLK) ? In my case
> common/env_mmc.c won't compile because of this.

I don't see a build error, but I'll rebase to master and see if I can.

My approach was to change the common uses and ones I had to change,
but not going an change all boards to do this. I suspect it is the
right thing to do ultimately, but for many boards it doesn't matter.

>
> Other than this problem with common/env_mmc.c and a few other adjustments
> not related to the mmc that unselecting DM_SPL required, this has been
> tested OK on a TI DRA72 evm.
>
> Jean-Jacques
>
[...]

Regards,
Simon


More information about the U-Boot mailing list