lkml.org 
[lkml]   [2012]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Device tree conversion of spi device vs. controller_data
    On 04/13/2012 05:29 AM, Grant Likely wrote:
    >> upon DT conversion of LPC32xx, I came across the at25 spi eeprom which
    >> needs .controller_data in struct spi_board_info for slave registration
    >> via spi_register_board_info() (non-DT-case).
    >>
    >> In the DT case, we need to eliminate this explicit registering call.
    >> Therefore, I need to somehow replace the .controller_data passing in the
    >> DT case to pass this data to the spi core. But I can't find such a
    >> mechanism (v3.4-rc2). Is there already a concept or API that I
    >> overlooked (please just point me to it) or what can I do to solve this?
    >> (Looks like a general issue for spi slave registration via DT).
    >
    > Can you point me at specific code?
    >
    > .controller_data is owned by the spi_master driver. The eeprom driver
    > shouldn't be accessing it directly at all; but I'll need to look at
    > specific code to really understand what is going on.

    Please have a look at arch/arm/mach-lpc32xx/phy3250.c :

    static struct pl022_config_chip spi0_chip_info = {
    .com_mode = INTERRUPT_TRANSFER,
    .iface = SSP_INTERFACE_MOTOROLA_SPI,
    .hierarchy = SSP_MASTER,
    .slave_tx_disable = 0,
    .rx_lev_trig = SSP_RX_4_OR_MORE_ELEM,
    .tx_lev_trig = SSP_TX_4_OR_MORE_EMPTY_LOC,
    .ctrl_len = SSP_BITS_8,
    .wait_state = SSP_MWIRE_WAIT_ZERO,
    .duplex = SSP_MICROWIRE_CHANNEL_FULL_DUPLEX,
    .cs_control = phy3250_spi_cs_set,
    };

    ...

    static struct spi_eeprom eeprom = {
    .name = "at25256a",
    .byte_len = 0x8000,
    .page_size = 64,
    .flags = EE_ADDR2,
    };

    static struct spi_board_info info[] = {
    {
    .modalias = "at25",
    .max_speed_hz = 5000000,
    .bus_num = 0,
    .chip_select = 0,
    .mode = SPI_MODE_0,
    .platform_data = &eeprom,
    .controller_data = &spi0_chip_info,
    },
    };

    spi_register_board_info(info, ARRAY_SIZE(info));

    Trying to replace .controller_data at this point with device tree
    settings passing, I struggled with missing resp. node properties.

    Any hint how this can be done?

    Thanks in advance,

    Roland


    \
     
     \ /
      Last update: 2012-04-13 09:13    [W:0.023 / U:29.832 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site