#ifndef LINUX_UCMB_H_ #define LINUX_UCMB_H_ #include #include /* IOCTLs */ #define __UCMB_IOCTL ('U'|'C'|'M'|'B') /** UCMB_IOCTL_RESETUC - Reset the microcontroller. */ #define UCMB_IOCTL_RESETUC _IO(__UCMB_IOCTL, 0) /** UCMB_IOCTL_GMSGDELAY - Get the delay to wait before fetching the status. */ #define UCMB_IOCTL_GMSGDELAY _IOR(__UCMB_IOCTL, 1, unsigned int) /** UCMB_IOCTL_SMSGDELAY - Set the delay to wait before fetching the status. */ #define UCMB_IOCTL_SMSGDELAY _IOW(__UCMB_IOCTL, 2, unsigned int) #ifdef __KERNEL__ #include #include #include /** * struct ucmb_platform_data - UCMB device descriptor * * @name: The name of the device. This will also be the name of * the misc char device. * * @gpio_cs: The chipselect GPIO pin. Can be SPI_GPIO_NO_CHIPSELECT, * if chipselect is not used. * @gpio_sck: The clock GPIO pin. * @gpio_miso: The master-in slave-out GPIO pin. * @gpio_mosi: The master-out slave-in GPIO pin. * * @gpio_reset: The GPIO pin to the microcontroller reset line. * Can be UCMB_NO_RESET, if reset GPIO is not used. * @reset_activelow: If true, @gpio_reset is considered to be active * on logical 0 (inverted). * * @mode: The SPI bus mode. SPI_MODE_* * @max_speed_hz: The bus speed, in Hz. If zero the speed is not limited. */ struct ucmb_platform_data { const char *name; unsigned long gpio_cs; unsigned int gpio_sck; unsigned int gpio_miso; unsigned int gpio_mosi; unsigned int gpio_reset; bool reset_activelow; u8 mode; u32 max_speed_hz; struct platform_device *pdev; /* internal */ }; #define UCMB_NO_RESET ((unsigned int)-1) int ucmb_device_register(struct ucmb_platform_data *pdata); void ucmb_device_unregister(struct ucmb_platform_data *pdata); #endif /* __KERNEL__ */ #endif /* LINUX_UCMB_H_ */