blob: 5fc2cd6227ad88ae5e46c5914a47c5a81a16f45e [file] [log] [blame]
/*
* 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 <linux/types.h>
#include <linux/spi/spi.h>
/**
* 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 */