/* * Device driver for MMC/SD cards driven over a GPIO bus. * * Copyright (c) 2008 Michael Buesch * * Licensed under the GNU/GPL version 2. */ #ifndef LINUX_GPIOMMC_H_ #define LINUX_GPIOMMC_H_ #include #define GPIOMMC_MAX_NAMELEN 15 #define GPIOMMC_MAX_NAMELEN_STR __stringify(GPIOMMC_MAX_NAMELEN) /** * struct gpiommc_pins - Hardware pin assignments * * @gpio_di: The GPIO number of the DATA IN pin * @gpio_do: The GPIO number of the DATA OUT pin * @gpio_clk: The GPIO number of the CLOCK pin * @gpio_cs: The GPIO number of the CHIPSELECT pin * @cs_activelow: If true, the chip is considered selected if @gpio_cs is low. */ struct gpiommc_pins { unsigned int gpio_di; unsigned int gpio_do; unsigned int gpio_clk; unsigned int gpio_cs; bool cs_activelow; }; /** * struct gpiommc_platform_data - Platform data for a MMC-over-SPI-GPIO device. * * @name: The unique name string of the device. * @pins: The hardware pin assignments. * @mode: The hardware mode. This is either SPI_MODE_0, * SPI_MODE_1, SPI_MODE_2 or SPI_MODE_3. See the SPI documentation. * @no_spi_delay: Do not use delays in the lowlevel SPI bitbanging code. * This is not standards compliant, but may be required for some * embedded machines to gain reasonable speed. * @max_bus_speed: The maximum speed of the SPI bus, in Hertz. */ struct gpiommc_platform_data { char name[GPIOMMC_MAX_NAMELEN + 1]; struct gpiommc_pins pins; u8 mode; bool no_spi_delay; unsigned int max_bus_speed; }; /** * GPIOMMC_PLATDEV_NAME - The platform device name string. * * The name string that has to be used for platform_device_alloc * when allocating a gpiommc device. */ #define GPIOMMC_PLATDEV_NAME "gpiommc" /** * gpiommc_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 gpiommc_next_id(void); #endif /* LINUX_GPIOMMC_H_ */