[U-Boot] [PATCH v2 06/13] spi: add common fdt SPI driver interface

Simon Glass sjg at chromium.org
Thu Mar 21 22:05:31 CET 2013


Hi Stephen,

On Tue, Mar 19, 2013 at 11:24 AM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> On 03/16/2013 10:58 PM, Allen Martin wrote:
>> Add a common interface to fdt based SPI drivers.  Each driver is
>> represented by a table entry in fdt_spi_drivers[].  If there are
>> multiple SPI drivers in the table, the first driver to return success
>> from spi_init() will be registered as the SPI driver.
>
>> diff --git a/drivers/spi/fdt_spi.c b/drivers/spi/fdt_spi.c
>
>> +static struct fdt_spi_driver fdt_spi_drivers[] = {
>> +#ifdef CONFIG_TEGRA20_SFLASH
>> +     {
>> +             .compat         = COMPAT_NVIDIA_TEGRA20_SFLASH,
>> +             .max_ctrls      = 1,
>> +             .init           = tegra20_spi_init,
>> +             .claim_bus      = tegra20_spi_claim_bus,
>> +             .cs_is_valid    = tegra20_spi_cs_is_valid,
>> +             .setup_slave    = tegra20_spi_setup_slave,
>> +             .free_slave     = tegra20_spi_free_slave,
>> +             .cs_activate    = tegra20_spi_cs_activate,
>> +             .cs_deactivate  = tegra20_spi_cs_deactivate,
>> +             .xfer           = tegra20_spi_xfer,
>> +     },
>> +#endif
>> +#ifdef CONFIG_TEGRA20_SLINK
>> +     {
>> +             .compat         = COMPAT_NVIDIA_TEGRA20_SLINK,
>> +             .max_ctrls      = CONFIG_TEGRA_SLINK_CTRLS,
>> +             .init           = tegra30_spi_init,
>> +             .claim_bus      = tegra30_spi_claim_bus,
>> +             .cs_is_valid    = tegra30_spi_cs_is_valid,
>> +             .setup_slave    = tegra30_spi_setup_slave,
>> +             .free_slave     = tegra30_spi_free_slave,
>> +             .cs_activate    = tegra30_spi_cs_activate,
>> +             .cs_deactivate  = tegra30_spi_cs_deactivate,
>> +             .xfer           = tegra30_spi_xfer,
>> +     },
>> +#endif
>> +};
>
> In the future, it would be nice if we could build up that table
> automatically, with each driver providing its own struct inside the
> driver file, and using e.g. linker scripts to piece together the structs
> into one large table. That would avoid the need to list each one here,
> and to prototype all those functions in a header file.
>
> It'd also be nice to allow multiple driver to be active at once.
>
> Still, that's certainly all something that's quite suitable for
> follow-on patches later; not something that needs to be addressed in
> this series.

Agreed. This fits more with the driver model work, where the above
structure could be used as the SPI subsystem interface perhaps.

Regards,
Simon


More information about the U-Boot mailing list