[U-Boot] [PATCH v4 05/29] dm: spi: Add a uclass for SPI

Stefan Roese sr at denx.de
Thu Oct 30 05:38:21 CET 2014


Hi Simon,

On 30.10.2014 02:43, Simon Glass wrote:
>> In my case I'm implementing the Designware master SPI driver for the
>> SoCFPGA. And since its a new driver it really makes sense to use DM
>> directly. I'm starting to get an overview now. One thing though that I
>> noticed is, that the SPI DM implementation seems to be a bit FDT centric.
>> Please see below.
>>
>> <snip>
>>
>>> diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
>>
>> <snip>
>>
>>> +int spi_post_bind(struct udevice *dev)
>>> +{
>>> +       /* Scan the bus for devices */
>>> +       return dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset, false);
>>> +}
>>
>>
>> SoCFPGA currently does not support CONFIG_OF_CONTROL (no dtb supplied). So
>
> In the kernel I see these files - are you sure it is not supported?
>
> arch/arm/boot/dts/socfpga_arria5.dtsi
> arch/arm/boot/dts/socfpga_arria5_socdk.dts
> arch/arm/boot/dts/socfpga_cyclone5.dtsi
> arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
> arch/arm/boot/dts/socfpga_cyclone5_sockit.dts
> arch/arm/boot/dts/socfpga_cyclone5_socrates.dts
> arch/arm/boot/dts/socfpga.dtsi
> arch/arm/boot/dts/socfpga_vt.dts

Sure. In the kernel dts is supported. Only U-Boot for SoCFPGA has no DT 
support (right now).

>> I'm planning to use platform_data to instantiate the device. Something like
>> this in the board file:
>>
>> static const struct dw_spi_platdata spi_platdata = {
>>          .base = SOCFPGA_SPIM0_ADDRESS,
>> };
>>
>> U_BOOT_DEVICE(dw_spi) = {
>>          .name = "dw_spi",
>>          .platdata = &spi_platdata,
>> };
>>
>> What would the non-fdt method have to be to bind the device in
>> spi_post_bind() above?
>
> We would have to create a new platform data structure that holds the
> bus number, CS number and any other information. Then it will need to
> cause spi_get_bus_and_cs() to locate it and do the right.
>
> But first let's make sure that you really do have the platform that
> doesn't use device tree... If it is ARM my understanding is that it
> should.

It does. In the kernel. I think I'll dive into adding DT support for 
SoCFPGA for a few hours. Perhaps thats even easier than adding 
platform-data support to the SPI DM. Lets see how this goes...

> Also see the SPI driver spi-howto.txt.

Thanks,
Stefan



More information about the U-Boot mailing list