/* * spi_gpio interface to platform code * * Copyright (c) 2008 Piotr Skamruk * Copyright (c) 2008 Michael Buesch * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef _LINUX_SPI_SPI_GPIO #define _LINUX_SPI_SPI_GPIO #include #include /** * struct spi_gpio_platform_data - Data definitions for a SPI-GPIO device. * * This structure holds information about a GPIO-based SPI device. * * @pin_clk: The GPIO pin number of the CLOCK pin. * * @pin_miso: The GPIO pin number of the MISO pin. * * @pin_mosi: The GPIO pin number of the MOSI pin. * * @pin_cs: The GPIO pin number of the CHIPSELECT pin. * * @cs_activelow: If true, the chip is selected when the CS line is low. * * @no_spi_delay: If true, no delay is done in the lowlevel bitbanging. * Note that doing no delay is not standards compliant, * but it might be needed to speed up transfers on some * slow embedded machines. * * @boardinfo_setup: This callback is called after the * SPI master device was registered, but before the * device is registered. * @boardinfo_setup_data: Data argument passed to boardinfo_setup(). */ struct spi_gpio_platform_data { unsigned int pin_clk; unsigned int pin_miso; unsigned int pin_mosi; unsigned int pin_cs; bool cs_activelow; bool no_spi_delay; int (*boardinfo_setup)(struct spi_board_info *bi, struct spi_master *master, void *data); void *boardinfo_setup_data; }; /** * SPI_GPIO_PLATDEV_NAME - The platform device name string. * * The name string that has to be used for platform_device_alloc * when allocating a spi-gpio device. */ #define SPI_GPIO_PLATDEV_NAME "spi-gpio" /** * spi_gpio_next_id - Get another platform device ID number. * * This returns the next platform device ID number that has to be used * for platform_device_alloc. The ID is opaque and should not be used for * anything else. */ int spi_gpio_next_id(void); #endif /* _LINUX_SPI_SPI_GPIO */