1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2ec2a0833SArnd Bergmann /* 3ec2a0833SArnd Bergmann * Board-specific MMC configuration 4ec2a0833SArnd Bergmann */ 5ec2a0833SArnd Bergmann 6ec2a0833SArnd Bergmann #ifndef _DAVINCI_MMC_H 7ec2a0833SArnd Bergmann #define _DAVINCI_MMC_H 8ec2a0833SArnd Bergmann 9ec2a0833SArnd Bergmann #include <linux/types.h> 10ec2a0833SArnd Bergmann #include <linux/mmc/host.h> 11ec2a0833SArnd Bergmann 12ec2a0833SArnd Bergmann struct davinci_mmc_config { 13ec2a0833SArnd Bergmann /* get_cd()/get_wp() may sleep */ 14ec2a0833SArnd Bergmann int (*get_cd)(int module); 15ec2a0833SArnd Bergmann int (*get_ro)(int module); 16ec2a0833SArnd Bergmann 17ec2a0833SArnd Bergmann void (*set_power)(int module, bool on); 18ec2a0833SArnd Bergmann 19ec2a0833SArnd Bergmann /* wires == 0 is equivalent to wires == 4 (4-bit parallel) */ 20ec2a0833SArnd Bergmann u8 wires; 21ec2a0833SArnd Bergmann 22ec2a0833SArnd Bergmann u32 max_freq; 23ec2a0833SArnd Bergmann 24ec2a0833SArnd Bergmann /* any additional host capabilities: OR'd in to mmc->f_caps */ 25ec2a0833SArnd Bergmann u32 caps; 26ec2a0833SArnd Bergmann 27ec2a0833SArnd Bergmann /* Number of sg segments */ 28ec2a0833SArnd Bergmann u8 nr_sg; 29ec2a0833SArnd Bergmann }; 30ec2a0833SArnd Bergmann void davinci_setup_mmc(int module, struct davinci_mmc_config *config); 31ec2a0833SArnd Bergmann 32ec2a0833SArnd Bergmann enum { 33ec2a0833SArnd Bergmann MMC_CTLR_VERSION_1 = 0, /* DM644x and DM355 */ 34ec2a0833SArnd Bergmann MMC_CTLR_VERSION_2, /* DA830 */ 35ec2a0833SArnd Bergmann }; 36ec2a0833SArnd Bergmann 37ec2a0833SArnd Bergmann #endif 38