Lines Matching refs:host

102 static inline unsigned int sdricoh_readl(struct sdricoh_host *host,  in sdricoh_readl()  argument
105 unsigned int value = readl(host->iobase + reg); in sdricoh_readl()
106 dev_vdbg(host->dev, "rl %x 0x%x\n", reg, value); in sdricoh_readl()
110 static inline void sdricoh_writel(struct sdricoh_host *host, unsigned int reg, in sdricoh_writel() argument
113 writel(value, host->iobase + reg); in sdricoh_writel()
114 dev_vdbg(host->dev, "wl %x 0x%x\n", reg, value); in sdricoh_writel()
118 static inline unsigned int sdricoh_readw(struct sdricoh_host *host, in sdricoh_readw() argument
121 unsigned int value = readw(host->iobase + reg); in sdricoh_readw()
122 dev_vdbg(host->dev, "rb %x 0x%x\n", reg, value); in sdricoh_readw()
126 static inline void sdricoh_writew(struct sdricoh_host *host, unsigned int reg, in sdricoh_writew() argument
129 writew(value, host->iobase + reg); in sdricoh_writew()
130 dev_vdbg(host->dev, "ww %x 0x%x\n", reg, value); in sdricoh_writew()
133 static inline unsigned int sdricoh_readb(struct sdricoh_host *host, in sdricoh_readb() argument
136 unsigned int value = readb(host->iobase + reg); in sdricoh_readb()
137 dev_vdbg(host->dev, "rb %x 0x%x\n", reg, value); in sdricoh_readb()
141 static int sdricoh_query_status(struct sdricoh_host *host, unsigned int wanted, in sdricoh_query_status() argument
145 struct device *dev = host->dev; in sdricoh_query_status()
147 status = sdricoh_readl(host, R21C_STATUS); in sdricoh_query_status()
148 sdricoh_writel(host, R2E4_STATUS_RESP, status); in sdricoh_query_status()
167 static int sdricoh_mmc_cmd(struct sdricoh_host *host, unsigned char opcode, in sdricoh_mmc_cmd() argument
174 sdricoh_writel(host, R21C_STATUS, 0x18); in sdricoh_mmc_cmd()
176 sdricoh_writel(host, R204_CMD_ARG, arg); in sdricoh_mmc_cmd()
177 sdricoh_writel(host, R200_CMD, (0x10000 << 8) | opcode); in sdricoh_mmc_cmd()
181 status = sdricoh_readl(host, R21C_STATUS); in sdricoh_mmc_cmd()
182 sdricoh_writel(host, R2E4_STATUS_RESP, status); in sdricoh_mmc_cmd()
198 static int sdricoh_reset(struct sdricoh_host *host) in sdricoh_reset() argument
200 dev_dbg(host->dev, "reset\n"); in sdricoh_reset()
201 sdricoh_writel(host, R2F0_RESET, 0x10001); in sdricoh_reset()
202 sdricoh_writel(host, R2E0_INIT, 0x10000); in sdricoh_reset()
203 if (sdricoh_readl(host, R2E0_INIT) != 0x10000) in sdricoh_reset()
205 sdricoh_writel(host, R2E0_INIT, 0x10007); in sdricoh_reset()
207 sdricoh_writel(host, R224_MODE, 0x2000000); in sdricoh_reset()
208 sdricoh_writel(host, R228_POWER, 0xe0); in sdricoh_reset()
212 sdricoh_writel(host, R21C_STATUS, 0x18); in sdricoh_reset()
217 static int sdricoh_blockio(struct sdricoh_host *host, int read, in sdricoh_blockio() argument
224 if (sdricoh_query_status(host, STATUS_READY_TO_READ, in sdricoh_blockio()
227 sdricoh_writel(host, R21C_STATUS, 0x18); in sdricoh_blockio()
230 data = sdricoh_readl(host, R230_DATA); in sdricoh_blockio()
241 if (sdricoh_query_status(host, STATUS_READY_TO_WRITE, in sdricoh_blockio()
244 sdricoh_writel(host, R21C_STATUS, 0x18); in sdricoh_blockio()
255 sdricoh_writel(host, R230_DATA, data); in sdricoh_blockio()
267 struct sdricoh_host *host = mmc_priv(mmc); in sdricoh_request() local
270 struct device *dev = host->dev; in sdricoh_request()
277 sdricoh_writel(host, R21C_STATUS, 0x18); in sdricoh_request()
280 if (host->app_cmd) { in sdricoh_request()
282 host->app_cmd = 0; in sdricoh_request()
284 host->app_cmd = 1; in sdricoh_request()
288 sdricoh_writew(host, R226_BLOCKSIZE, data->blksz); in sdricoh_request()
289 sdricoh_writel(host, R208_DATAIO, 0); in sdricoh_request()
292 cmd->error = sdricoh_mmc_cmd(host, opcode, cmd->arg); in sdricoh_request()
300 sdricoh_readl(host, in sdricoh_request()
304 sdricoh_readb(host, R20C_RESP + in sdricoh_request()
308 cmd->resp[0] = sdricoh_readl(host, R20C_RESP); in sdricoh_request()
318 sdricoh_writel(host, R21C_STATUS, 0x837f031e); in sdricoh_request()
328 sdricoh_blockio(host, in sdricoh_request()
341 sdricoh_writel(host, R208_DATAIO, 1); in sdricoh_request()
343 if (sdricoh_query_status(host, STATUS_TRANSFER_FINISHED, in sdricoh_request()
357 struct sdricoh_host *host = mmc_priv(mmc); in sdricoh_set_ios() local
358 dev_dbg(host->dev, "set_ios\n"); in sdricoh_set_ios()
361 sdricoh_writel(host, R228_POWER, 0xc0e0); in sdricoh_set_ios()
364 sdricoh_writel(host, R224_MODE, 0x2000300); in sdricoh_set_ios()
365 sdricoh_writel(host, R228_POWER, 0x40e0); in sdricoh_set_ios()
367 sdricoh_writel(host, R224_MODE, 0x2000340); in sdricoh_set_ios()
371 sdricoh_writel(host, R224_MODE, 0x2000320); in sdricoh_set_ios()
372 sdricoh_writel(host, R228_POWER, 0xe0); in sdricoh_set_ios()
378 struct sdricoh_host *host = mmc_priv(mmc); in sdricoh_get_ro() local
381 status = sdricoh_readl(host, R21C_STATUS); in sdricoh_get_ro()
382 sdricoh_writel(host, R2E4_STATUS_RESP, status); in sdricoh_get_ro()
404 struct sdricoh_host *host = NULL; in sdricoh_init_mmc() local
432 host = mmc_priv(mmc); in sdricoh_init_mmc()
434 host->iobase = iobase; in sdricoh_init_mmc()
435 host->dev = dev; in sdricoh_init_mmc()
436 host->pci_dev = pci_dev; in sdricoh_init_mmc()
451 if (sdricoh_reset(host)) { in sdricoh_init_mmc()
506 struct sdricoh_host *host = mmc_priv(mmc); in sdricoh_pcmcia_detach() local
508 pci_iounmap(host->pci_dev, host->iobase); in sdricoh_pcmcia_detach()
509 pci_dev_put(host->pci_dev); in sdricoh_pcmcia_detach()