Hi,

On Mon, Jun 07, 2010 at 20:39:07, Brian Niebuhr wrote:
> 
> Signed-off-by: Brian Niebuhr <bnieb...@efjohnson.com>
> ---
>  arch/arm/mach-davinci/include/mach/spi.h |   41 +-
>  drivers/spi/davinci_spi.c                |  936 
> ++++++++++++++++++++++++++++++
>  drivers/spi/davinci_spi.h                |  186 ++++++
>  3 files changed, 1149 insertions(+), 14 deletions(-)
>  create mode 100644 drivers/spi/davinci_spi.c
>  create mode 100644 drivers/spi/davinci_spi.h
> 
> diff --git a/arch/arm/mach-davinci/include/mach/spi.h 
> b/arch/arm/mach-davinci/include/mach/spi.h
> index 910efbf..10c39d8 100644
> --- a/arch/arm/mach-davinci/include/mach/spi.h
> +++ b/arch/arm/mach-davinci/include/mach/spi.h
> @@ -19,26 +19,39 @@
>  #ifndef __ARCH_ARM_DAVINCI_SPI_H
>  #define __ARCH_ARM_DAVINCI_SPI_H
>  
> +#define SPI_INTERN_CS        0xFF
> +
> +/* resource flags for IORESOURCE_DMA resources */
> +#define IORESOURCE_DMA_RX_CHAN               0x01
> +#define IORESOURCE_DMA_TX_CHAN               0x02
> +#define IORESOURCE_DMA_EVENT_Q               0x04
> +
>  enum {
> -     SPI_VERSION_1, /* For DM355/DM365/DM6467 */
> +     SPI_VERSION_1, /* For DM355/DM365/DM6467*/

Above line in the patch is not required.

[...]

> +/*
> + * davinci_spi_probe - probe function for SPI Master Controller
> + * @pdev: platform_device structure which contains plateform specific data
> + *
> + * According to Linux Device Model this function will be invoked by Linux
> + * with plateform_device struct which contains the device specific info.
> + * This function will map the SPI controller's memory, register IRQ,
> + * Reset SPI controller and setting its registers to default value.
> + * It will invoke spi_bitbang_start to create work queue so that client 
> driver
> + * can register transfer method to work queue.
> + */
> +static int davinci_spi_probe(struct platform_device *pdev)
> +{

[...]

> +
> +     davinci_spi->version = pdata->version;
> +
> +     davinci_spi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP;
> +     if (davinci_spi->version == SPI_VERSION_2)
> +             davinci_spi->bitbang.flags |= SPI_READY;
> +
> +     dma_rx_chan = davinci_spi_get_dma_by_flag(pdev, IORESOURCE_DMA_RX_CHAN);
> +     dma_tx_chan = davinci_spi_get_dma_by_flag(pdev, IORESOURCE_DMA_TX_CHAN);
> +     dma_eventq  = davinci_spi_get_dma_by_flag(pdev, IORESOURCE_DMA_EVENT_Q);
> +     davinci_spi->dma_channels.dma_rx_channel = -1;
> +     davinci_spi->dma_channels.dma_rx_sync_dev = dma_rx_chan;
> +     davinci_spi->dma_channels.dma_tx_channel = -1;
> +     davinci_spi->dma_channels.dma_tx_sync_dev = dma_tx_chan;
> +     davinci_spi->dma_channels.dummy_param_slot = -1;
> +     davinci_spi->dma_channels.eventq = dma_eventq;

Can the above configurations be done only in case if DMA mode?

[...]

> +     ret = spi_bitbang_start(&davinci_spi->bitbang);
> +     if (ret != 0)
> +             goto free_clk;
> +
> +     dev_info(&pdev->dev, "Controller at 0x%p \n", davinci_spi->base);
> +

Some way of informing the user about the mode in which the driver is
working is desirable.

Regards,
Sudhakar


_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to