Re: [PATCH/RFC] simple SPI controller on PXA2xx SSP port, refresh

From: Stephen Street
Date: Fri Nov 04 2005 - 18:39:05 EST


On Fri, 2005-11-04 at 12:16 -0800, David Brownell wrote:
> I'd be confused. They're both slave-specific ... and owned by
> the master/controller driver.

I'm using the spi_board_info.platform_data to pass configuration
information to the spi_device (slave) driver and
spi_board_info.controller_data to pass SPI bus configuration for the
specific slave device. This allows different bus configurations for
each attached SPI device. The following is a concrete example:

/* CS8415A configuration information and board interface setup */
static struct cs8415a_platform_data cs8415a_platform_info = {
.enabled = 0,
.muted = 1,
.channel = 0,
.pll_lock_delay = 100,
.irq_flags = SA_SHIRQ,
.mask_interrupt = cs8415a_mask_interrupt,
.unmask_interrupt = cs8415a_unmask_interrupt,
.service_requested = cs8415a_service_requested,
};

/* PXA2XX SPI bus setup for CS8415A */
static struct pxa2xx_spi_chip cs8415a_chip_info = {
.tx_threshold = 12,
.rx_threshold = 4,
.dma_burst_size = 8,
.timeout_microsecs = 64,
.cs_control = cs8415a_cs_control,
};

static struct spi_board_info streetracer_spi_board_info[] __initdata = {
{
.modalias = "cs8415a",
.max_speed_hz = 3686400,
.bus_num = 2,
.chip_select = 0,
.platform_data = &cs8415a_platform_info,
.controller_data = &cs8415a_chip_info,
.irq = STREETRACER_APCI_IRQ,
},
};

IMHO the confusion is coming from the fact that struct spi_board_info is
being used to pass related, but implementation dependent, configuration
information to both the master and the slave simultaneously. Maybe we
are asking spi_board_info to carry to much information?

> Instead, how about "controller_data" changing to match its role
> in board_info (static info, not dynamic), and "platform_data"
> becoming something like "controller_state"?

If you mean spi_device.controller_data becomes
spi_device.controller_state, yes!

-Stephen

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/