[PATCH 1/3] SPI bus core infrastructure
Eugene Surovegin
ebs at ebshome.net
Sun Jul 24 00:22:10 EST 2005
On Sat, Jul 23, 2005 at 10:07:38AM -0400, Grant Likely wrote:
> Patch to add support for SPI busses. SPI bus master drivers and SPI
> slave drivers register with the SPI infrastructure.
>
> +#define SPI_CLKEDGE_RISING 0
> +#define SPI_CLKEDGE_FALLING 1
> +struct spi_bus_ops {
> + int (*transfer) (struct spi_bus *bus, int id, int clkedge,
> + uint8_t *in, const uint8_t *out, size_t count);
> +};
This isn't enough.
You must have a way to specify clock frequency, data order (which bit
goes first, char length.
Take a look at how PowerQUICC defines SPI peripheral, to get an idea
on what should be made configurable.
This is what I use on PowerQUICC as SPI interface:
/* SPI parameters for a specific client.
* Most of them have the same meaning as in SPMODE register
*/
struct pq2_spi_client {
unsigned int clock_invert : 1;
unsigned int clock_phase : 1;
unsigned int reverse_data : 1;
int char_length;
int clock; /* in Hz */
const char *name;
void (*cs_control)(int assert);
};
int pq2_spi_xfer(struct pq2_spi_client*, const u8 *tx_buf, u8 *rx_buf, int len);
More information about the Linuxppc-embedded
mailing list