Lines Matching defs:host
25 #include <linux/mmc/host.h>
88 static inline unsigned int sdricoh_readl(struct sdricoh_host *host,
91 unsigned int value = readl(host->iobase + reg);
92 dev_vdbg(host->dev, "rl %x 0x%x\n", reg, value);
96 static inline void sdricoh_writel(struct sdricoh_host *host, unsigned int reg,
99 writel(value, host->iobase + reg);
100 dev_vdbg(host->dev, "wl %x 0x%x\n", reg, value);
104 static inline unsigned int sdricoh_readw(struct sdricoh_host *host,
107 unsigned int value = readw(host->iobase + reg);
108 dev_vdbg(host->dev, "rb %x 0x%x\n", reg, value);
112 static inline void sdricoh_writew(struct sdricoh_host *host, unsigned int reg,
115 writew(value, host->iobase + reg);
116 dev_vdbg(host->dev, "ww %x 0x%x\n", reg, value);
119 static inline unsigned int sdricoh_readb(struct sdricoh_host *host,
122 unsigned int value = readb(host->iobase + reg);
123 dev_vdbg(host->dev, "rb %x 0x%x\n", reg, value);
127 static bool sdricoh_status_ok(struct sdricoh_host *host, unsigned int status,
130 sdricoh_writel(host, R2E4_STATUS_RESP, status);
134 static int sdricoh_query_status(struct sdricoh_host *host, unsigned int wanted)
138 struct device *dev = host->dev;
141 sdricoh_status_ok(host, status, wanted),
143 host, R21C_STATUS);
158 static int sdricoh_mmc_cmd(struct sdricoh_host *host, struct mmc_command *cmd)
165 sdricoh_writel(host, R21C_STATUS, 0x18);
168 if (host->app_cmd) {
170 host->app_cmd = 0;
172 host->app_cmd = 1;
175 sdricoh_writel(host, R204_CMD_ARG, cmd->arg);
176 sdricoh_writel(host, R200_CMD, (0x10000 << 8) | opcode);
186 sdricoh_status_ok(host, status, STATUS_CMD_FINISHED),
188 host, R21C_STATUS);
200 static int sdricoh_reset(struct sdricoh_host *host)
202 dev_dbg(host->dev, "reset\n");
203 sdricoh_writel(host, R2F0_RESET, 0x10001);
204 sdricoh_writel(host, R2E0_INIT, 0x10000);
205 if (sdricoh_readl(host, R2E0_INIT) != 0x10000)
207 sdricoh_writel(host, R2E0_INIT, 0x10007);
209 sdricoh_writel(host, R224_MODE, 0x2000000);
210 sdricoh_writel(host, R228_POWER, 0xe0);
214 sdricoh_writel(host, R21C_STATUS, 0x18);
219 static int sdricoh_blockio(struct sdricoh_host *host, int read,
226 if (sdricoh_query_status(host, STATUS_READY_TO_READ))
228 sdricoh_writel(host, R21C_STATUS, 0x18);
231 data = sdricoh_readl(host, R230_DATA);
242 if (sdricoh_query_status(host, STATUS_READY_TO_WRITE))
244 sdricoh_writel(host, R21C_STATUS, 0x18);
255 sdricoh_writel(host, R230_DATA, data);
264 struct sdricoh_host *host = mmc_priv(mmc);
267 struct device *dev = host->dev;
273 sdricoh_writel(host, R21C_STATUS, 0x18);
277 sdricoh_writew(host, R226_BLOCKSIZE, data->blksz);
278 sdricoh_writel(host, R208_DATAIO, 0);
281 cmd->error = sdricoh_mmc_cmd(host, cmd);
289 sdricoh_readl(host,
293 sdricoh_readb(host, R20C_RESP +
297 cmd->resp[0] = sdricoh_readl(host, R20C_RESP);
307 sdricoh_writel(host, R21C_STATUS, 0x837f031e);
317 sdricoh_blockio(host,
330 sdricoh_writel(host, R208_DATAIO, 1);
332 if (sdricoh_query_status(host, STATUS_TRANSFER_FINISHED)) {
345 struct sdricoh_host *host = mmc_priv(mmc);
346 dev_dbg(host->dev, "set_ios\n");
349 sdricoh_writel(host, R228_POWER, 0xc0e0);
352 sdricoh_writel(host, R224_MODE, 0x2000300);
353 sdricoh_writel(host, R228_POWER, 0x40e0);
355 sdricoh_writel(host, R224_MODE, 0x2000340);
359 sdricoh_writel(host, R224_MODE, 0x2000320);
360 sdricoh_writel(host, R228_POWER, 0xe0);
366 struct sdricoh_host *host = mmc_priv(mmc);
369 status = sdricoh_readl(host, R21C_STATUS);
370 sdricoh_writel(host, R2E4_STATUS_RESP, status);
392 struct sdricoh_host *host;
420 host = mmc_priv(mmc);
422 host->iobase = iobase;
423 host->dev = dev;
424 host->pci_dev = pci_dev;
439 if (sdricoh_reset(host)) {
448 dev_dbg(dev, "mmc host registered\n");
488 /* remove mmc host */
490 struct sdricoh_host *host = mmc_priv(mmc);
492 pci_iounmap(host->pci_dev, host->iobase);
493 pci_dev_put(host->pci_dev);