xref: /openbmc/u-boot/drivers/mmc/ftsdc010_mci.h (revision 9c0e2f6e)
1 /*
2  * Faraday FTSDC010 Secure Digital Memory Card Host Controller
3  *
4  * Copyright (C) 2011 Andes Technology Corporation
5  * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com>
6  *
7  * SPDX-License-Identifier:	GPL-2.0+
8  */
9 #include <mmc.h>
10 
11 #ifndef __FTSDC010_MCI_H
12 #define __FTSDC010_MCI_H
13 
14 struct ftsdc010_chip {
15 	void __iomem *regs;
16 	uint32_t wprot;   /* write protected (locked) */
17 	uint32_t rate;    /* actual SD clock in Hz */
18 	uint32_t sclk;    /* FTSDC010 source clock in Hz */
19 	uint32_t fifo;    /* fifo depth in bytes */
20 	uint32_t acmd;
21 	struct mmc_config cfg;	/* mmc configuration */
22 	const char *name;
23 	void *ioaddr;
24 	unsigned int caps;
25 	unsigned int version;
26 	unsigned int clock;
27 	unsigned int bus_hz;
28 	unsigned int div;
29 	int dev_index;
30 	int dev_id;
31 	int buswidth;
32 	u32 fifoth_val;
33 	struct mmc *mmc;
34 	void *priv;
35 	bool fifo_mode;
36 };
37 
38 
39 #ifdef CONFIG_DM_MMC
40 /* Export the operations to drivers */
41 int ftsdc010_probe(struct udevice *dev);
42 extern const struct dm_mmc_ops dm_ftsdc010_ops;
43 #endif
44 void ftsdc_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth,
45 		     uint caps, u32 max_clk, u32 min_clk);
46 void set_bus_width(struct ftsdc010_mmc __iomem *regs, struct mmc_config *cfg);
47 
48 #ifdef CONFIG_BLK
49 int ftsdc010_bind(struct udevice *dev, struct mmc *mmc, struct mmc_config *cfg);
50 #endif
51 
52 
53 #endif /* __FTSDC010_MCI_H */
54