1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * include/linux/amba/mmci.h 4 */ 5 #ifndef AMBA_MMCI_H 6 #define AMBA_MMCI_H 7 8 #include <linux/mmc/host.h> 9 #include <linux/mmc/card.h> 10 #include <linux/mmc/sdio_func.h> 11 12 struct embedded_sdio_data { 13 struct sdio_cis cis; 14 struct sdio_cccr cccr; 15 struct sdio_embedded_func *funcs; 16 int num_funcs; 17 }; 18 19 /** 20 * struct mmci_platform_data - platform configuration for the MMCI 21 * (also known as PL180) block. 22 * @ocr_mask: available voltages on the 4 pins from the block, this 23 * is ignored if a regulator is used, see the MMC_VDD_* masks in 24 * mmc/host.h 25 * @ios_handler: a callback function to act on specfic ios changes, 26 * used for example to control a levelshifter 27 * mask into a value to be binary (or set some other custom bits 28 * in MMCIPWR) or:ed and written into the MMCIPWR register of the 29 * block. May also control external power based on the power_mode. 30 * @status: if no GPIO read function was given to the block in 31 * gpio_wp (below) this function will be called to determine 32 * whether a card is present in the MMC slot or not 33 * @gpio_wp: read this GPIO pin to see if the card is write protected 34 * @gpio_cd: read this GPIO pin to detect card insertion 35 * @cd_invert: true if the gpio_cd pin value is active low 36 */ 37 struct mmci_platform_data { 38 unsigned int ocr_mask; 39 int (*ios_handler)(struct device *, struct mmc_ios *); 40 unsigned int (*status)(struct device *); 41 int gpio_wp; 42 int gpio_cd; 43 bool cd_invert; 44 struct embedded_sdio_data *embedded_sdio; 45 }; 46 47 #endif 48