Lines Matching full:sd
171 #define SD3_TUNING_REQD(sd, sd_uhsimode) ((sd_uhsimode != SD3CLKMODE_DISABLED) && \ argument
172 (sd->version == HOST_CONTR_VER_3) && \
175 (GFIELD(sd->caps3, CAP3_TUNING_SDR50)))))
195 uint sd_power = 1; /* Default to SD Slot powered ON */
197 uint sd_clock = 1; /* Default to SD Clock turned ON */
213 static bool sdstd_start_clock(sdioh_info_t *sd, uint16 divisor);
214 static uint16 sdstd_start_power(sdioh_info_t *sd, int volts_req);
215 static bool sdstd_bus_width(sdioh_info_t *sd, int width);
216 static int sdstd_set_highspeed_mode(sdioh_info_t *sd, bool HSMode);
217 static int sdstd_set_dma_mode(sdioh_info_t *sd, int8 dma_mode);
218 static int sdstd_card_enablefuncs(sdioh_info_t *sd);
219 static void sdstd_cmd_getrsp(sdioh_info_t *sd, uint32 *rsp_buffer, int count);
220 static int sdstd_cmd_issue(sdioh_info_t *sd, bool use_dma, uint32 cmd, uint32 arg);
221 static int sdstd_card_regread(sdioh_info_t *sd, int func, uint32 regaddr,
223 static int sdstd_card_regwrite(sdioh_info_t *sd, int func, uint32 regaddr,
225 static int sdstd_driver_init(sdioh_info_t *sd);
226 static bool sdstd_reset(sdioh_info_t *sd, bool host_reset, bool client_reset);
227 static int sdstd_card_buf(sdioh_info_t *sd, int rw, int func, bool fifo,
229 static int sdstd_abort(sdioh_info_t *sd, uint func);
231 static int set_client_block_size(sdioh_info_t *sd, int func, int blocksize);
232 static void sd_map_dma(sdioh_info_t * sd);
233 static void sd_unmap_dma(sdioh_info_t * sd);
234 static void sd_clear_adma_dscr_buf(sdioh_info_t *sd);
235 static void sd_fill_dma_data_buf(sdioh_info_t *sd, uint8 data);
236 static void sd_create_adma_descriptor(sdioh_info_t *sd,
239 static void sd_dump_adma_dscr(sdioh_info_t *sd);
240 static void sdstd_dumpregs(sdioh_info_t *sd);
242 static int sdstd_3_set_highspeed_uhsi_mode(sdioh_info_t *sd, int sd3ClkMode);
243 static int sdstd_3_sigvoltswitch_proc(sdioh_info_t *sd);
244 static int sdstd_3_get_matching_uhsi_clkmode(sdioh_info_t *sd,
246 static bool sdstd_3_get_matching_drvstrn(sdioh_info_t *sd,
248 static int sdstd_3_clock_wrapper(sdioh_info_t *sd);
249 static int sdstd_clock_wrapper(sdioh_info_t *sd);
255 static void cis_fetch(sdioh_info_t *sd, int func, char *data, int len);
260 static void print_regs(sdioh_info_t *sd);
270 extern uint16 sdstd_rreg16(sdioh_info_t *sd, uint reg);
272 sdstd_rreg16(sdioh_info_t *sd, uint reg) in sdstd_rreg16() argument
275 volatile uint16 data = *(volatile uint16 *)(sd->mem_space + reg); in sdstd_rreg16()
281 extern void sdstd_wreg16(sdioh_info_t *sd, uint reg, uint16 data);
283 sdstd_wreg16(sdioh_info_t *sd, uint reg, uint16 data) in sdstd_wreg16() argument
285 *(volatile uint16 *)(sd->mem_space + reg) = (uint16) data; in sdstd_wreg16()
290 sdstd_or_reg16(sdioh_info_t *sd, uint reg, uint16 val) in sdstd_or_reg16() argument
292 volatile uint16 data = *(volatile uint16 *)(sd->mem_space + reg); in sdstd_or_reg16()
295 *(volatile uint16 *)(sd->mem_space + reg) = (uint16)data; in sdstd_or_reg16()
299 sdstd_mod_reg16(sdioh_info_t *sd, uint reg, int16 mask, uint16 val) in sdstd_mod_reg16() argument
302 volatile uint16 data = *(volatile uint16 *)(sd->mem_space + reg); in sdstd_mod_reg16()
306 *(volatile uint16 *)(sd->mem_space + reg) = (uint16)data; in sdstd_mod_reg16()
311 sdstd_rreg(sdioh_info_t *sd, uint reg) in sdstd_rreg() argument
313 volatile uint32 data = *(volatile uint32 *)(sd->mem_space + reg); in sdstd_rreg()
318 sdstd_wreg(sdioh_info_t *sd, uint reg, uint32 data) in sdstd_wreg() argument
320 *(volatile uint32 *)(sd->mem_space + reg) = (uint32)data; in sdstd_wreg()
327 sdstd_or_reg(sdioh_info_t *sd, uint reg, uint32 val) in sdstd_or_reg() argument
329 volatile uint32 data = *(volatile uint32 *)(sd->mem_space + reg); in sdstd_or_reg()
331 *(volatile uint32 *)(sd->mem_space + reg) = (volatile uint32)data; in sdstd_or_reg()
334 sdstd_mod_reg(sdioh_info_t *sd, uint reg, uint32 mask, uint32 val) in sdstd_mod_reg() argument
336 volatile uint32 data = *(volatile uint32 *)(sd->mem_space + reg); in sdstd_mod_reg()
339 *(volatile uint32 *)(sd->mem_space + reg) = (volatile uint32)data; in sdstd_mod_reg()
346 sdstd_wreg8(sdioh_info_t *sd, uint reg, uint8 data) in sdstd_wreg8() argument
348 *(volatile uint8 *)(sd->mem_space + reg) = (uint8)data; in sdstd_wreg8()
352 sdstd_rreg8(sdioh_info_t *sd, uint reg) in sdstd_rreg8() argument
354 volatile uint8 data = *(volatile uint8 *)(sd->mem_space + reg); in sdstd_rreg8()
371 sdioh_info_t *sd; in sdioh_attach() local
374 if ((sd = (sdioh_info_t *)MALLOC(osh, sizeof(sdioh_info_t))) == NULL) { in sdioh_attach()
378 bzero((char *)sd, sizeof(sdioh_info_t)); in sdioh_attach()
379 glob_sd = sd; in sdioh_attach()
380 sd->osh = osh; in sdioh_attach()
381 if (sdstd_osinit(sd) != 0) { in sdioh_attach()
383 MFREE(sd->osh, sd, sizeof(sdioh_info_t)); in sdioh_attach()
386 sd->mem_space = (volatile char *)sdstd_reg_map(osh, (ulong)bar0, SDIOH_REG_WINSZ); in sdioh_attach()
387 sd_init_dma(sd); in sdioh_attach()
388 sd->irq = irq; in sdioh_attach()
389 if (sd->mem_space == NULL) { in sdioh_attach()
391 sdstd_osfree(sd); in sdioh_attach()
392 MFREE(sd->osh, sd, sizeof(sdioh_info_t)); in sdioh_attach()
395 sd_info(("%s:sd->mem_space = %p\n", __FUNCTION__, sd->mem_space)); in sdioh_attach()
396 sd->intr_handler = NULL; in sdioh_attach()
397 sd->intr_handler_arg = NULL; in sdioh_attach()
398 sd->intr_handler_valid = FALSE; in sdioh_attach()
401 sd->sd_blockmode = TRUE; in sdioh_attach()
402 sd->use_client_ints = TRUE; in sdioh_attach()
403 sd->sd_dma_mode = sd_dma_mode; in sdioh_attach()
406 if (!sd->sd_blockmode) in sdioh_attach()
407 sd->sd_dma_mode = DMA_MODE_NONE; in sdioh_attach()
409 if (sdstd_driver_init(sd) != SUCCESS) { in sdioh_attach()
410 /* If host CPU was reset without resetting SD bus or in sdioh_attach()
411 SD device, the device will still have its RCA but in sdioh_attach()
416 if (sdstd_driver_init(sd) != SUCCESS) { in sdioh_attach()
418 if (sd->mem_space) { in sdioh_attach()
419 sdstd_reg_unmap(osh, (ulong)sd->mem_space, SDIOH_REG_WINSZ); in sdioh_attach()
420 sd->mem_space = NULL; in sdioh_attach()
422 sdstd_osfree(sd); in sdioh_attach()
423 MFREE(sd->osh, sd, sizeof(sdioh_info_t)); in sdioh_attach()
434 sd_map_dma(sd); in sdioh_attach()
436 if (sdstd_register_irq(sd, irq) != SUCCESS) { in sdioh_attach()
438 sdstd_free_irq(sd->irq, sd); in sdioh_attach()
439 if (sd->mem_space) { in sdioh_attach()
440 sdstd_reg_unmap(osh, (ulong)sd->mem_space, SDIOH_REG_WINSZ); in sdioh_attach()
441 sd->mem_space = NULL; in sdioh_attach()
444 sdstd_osfree(sd); in sdioh_attach()
445 MFREE(sd->osh, sd, sizeof(sdioh_info_t)); in sdioh_attach()
450 return sd; in sdioh_attach()
454 sdioh_detach(osl_t *osh, sdioh_info_t *sd) in sdioh_detach() argument
457 if (sd) { in sdioh_detach()
458 sd_unmap_dma(sd); in sdioh_detach()
459 sdstd_wreg16(sd, SD_IntrSignalEnable, 0); in sdioh_detach()
460 if (sd->sd3_tuning_reqd == TRUE) { in sdioh_detach()
461 sdstd_3_osclean_tuning(sd); in sdioh_detach()
462 sd->sd3_tuning_reqd = FALSE; in sdioh_detach()
464 sd->sd3_tuning_disable = FALSE; in sdioh_detach()
465 sd_trace(("%s: freeing irq %d\n", __FUNCTION__, sd->irq)); in sdioh_detach()
466 sdstd_free_irq(sd->irq, sd); in sdioh_detach()
467 if (sd->card_init_done) in sdioh_detach()
468 sdstd_reset(sd, 1, 1); in sdioh_detach()
469 if (sd->mem_space) { in sdioh_detach()
470 sdstd_reg_unmap(osh, (ulong)sd->mem_space, SDIOH_REG_WINSZ); in sdioh_detach()
471 sd->mem_space = NULL; in sdioh_detach()
474 sdstd_osfree(sd); in sdioh_detach()
475 MFREE(sd->osh, sd, sizeof(sdioh_info_t)); in sdioh_detach()
482 sdioh_interrupt_register(sdioh_info_t *sd, sdioh_cb_fn_t fn, void *argh) in sdioh_interrupt_register() argument
485 sd->intr_handler = fn; in sdioh_interrupt_register()
486 sd->intr_handler_arg = argh; in sdioh_interrupt_register()
487 sd->intr_handler_valid = TRUE; in sdioh_interrupt_register()
492 sdioh_interrupt_deregister(sdioh_info_t *sd) in sdioh_interrupt_deregister() argument
495 sd->intr_handler_valid = FALSE; in sdioh_interrupt_deregister()
496 sd->intr_handler = NULL; in sdioh_interrupt_deregister()
497 sd->intr_handler_arg = NULL; in sdioh_interrupt_deregister()
502 sdioh_interrupt_query(sdioh_info_t *sd, bool *onoff) in sdioh_interrupt_query() argument
505 *onoff = sd->client_intr_enabled; in sdioh_interrupt_query()
511 sdioh_interrupt_pending(sdioh_info_t *sd) in sdioh_interrupt_pending() argument
514 intrstatus = sdstd_rreg16(sd, SD_IntrStatus); in sdioh_interrupt_pending()
520 sdioh_query_iofnum(sdioh_info_t *sd) in sdioh_query_iofnum() argument
522 return sd->num_funcs; in sdioh_query_iofnum()
581 uint8 sdstd_turn_on_clock(sdioh_info_t *sd) in sdstd_turn_on_clock() argument
583 sdstd_or_reg16(sd, SD_ClockCntrl, 0x4); in sdstd_turn_on_clock()
587 uint8 sdstd_turn_off_clock(sdioh_info_t *sd) in sdstd_turn_off_clock() argument
589 sdstd_wreg16(sd, SD_ClockCntrl, sdstd_rreg16(sd, SD_ClockCntrl) & ~((uint16)0x4)); in sdstd_turn_off_clock()
784 sd_err(("set SD Slot power failed!\n")); in sdioh_iovar_op()
787 sd_err(("SD Slot Powered ON.\n")); in sdioh_iovar_op()
794 sd_err(("SD Slot Powered OFF.\n")); in sdioh_iovar_op()
810 sd_info(("SD Clock turned ON.\n")); in sdioh_iovar_op()
820 sd_info(("SD Clock turned OFF.\n")); in sdioh_iovar_op()
1038 sdioh_cfg_read(sdioh_info_t *sd, uint fnc_num, uint32 addr, uint8 *data) in sdioh_cfg_read() argument
1042 status = sdioh_request_byte(sd, SDIOH_READ, fnc_num, addr, data); in sdioh_cfg_read()
1047 sdioh_cfg_write(sdioh_info_t *sd, uint fnc_num, uint32 addr, uint8 *data) in sdioh_cfg_write() argument
1051 status = sdioh_request_byte(sd, SDIOH_WRITE, fnc_num, addr, data); in sdioh_cfg_write()
1056 sdioh_cis_read(sdioh_info_t *sd, uint func, uint8 *cisd, uint32 length) in sdioh_cis_read() argument
1065 if (!sd->func_cis_ptr[func]) { in sdioh_cis_read()
1070 sdstd_lock(sd); in sdioh_cis_read()
1073 offset = sd->func_cis_ptr[func] + count; in sdioh_cis_read()
1074 if (sdstd_card_regread(sd, 0, offset, 1, &foo)) { in sdioh_cis_read()
1076 sdstd_unlock(sd); in sdioh_cis_read()
1082 sdstd_unlock(sd); in sdioh_cis_read()
1087 sdioh_request_byte(sdioh_info_t *sd, uint rw, uint func, uint regaddr, uint8 *byte) in sdioh_request_byte() argument
1093 sdstd_lock(sd); in sdioh_request_byte()
1095 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_PRE_DATA); in sdioh_request_byte()
1098 sdstd_3_set_data_state(sd, DATA_TRANSFER_ONGOING); in sdioh_request_byte()
1101 if (sdstd_rreg16 (sd, SD_ErrorIntrStatus) != 0) { in sdioh_request_byte()
1103 __FUNCTION__, sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdioh_request_byte()
1104 sdstd_rreg16(sd, SD_IntrStatus))); in sdioh_request_byte()
1114 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_52, cmd_arg)) != SUCCESS) { in sdioh_request_byte()
1116 sdstd_3_set_data_state(sd, DATA_TRANSFER_IDLE); in sdioh_request_byte()
1117 sdstd_unlock(sd); in sdioh_request_byte()
1121 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdioh_request_byte()
1122 if (sdstd_rreg16 (sd, SD_ErrorIntrStatus) != 0) { in sdioh_request_byte()
1124 __FUNCTION__, sdstd_rreg16(sd, SD_ErrorIntrStatus))); in sdioh_request_byte()
1150 sdstd_3_set_data_state(sd, DATA_TRANSFER_IDLE); in sdioh_request_byte()
1153 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_POST_DATA); in sdioh_request_byte()
1155 sdstd_unlock(sd); in sdioh_request_byte()
1160 sdioh_request_word(sdioh_info_t *sd, uint cmd_type, uint rw, uint func, uint addr, in sdioh_request_word() argument
1165 sdstd_lock(sd); in sdioh_request_word()
1167 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_PRE_DATA); in sdioh_request_word()
1170 sdstd_3_set_data_state(sd, DATA_TRANSFER_ONGOING); in sdioh_request_word()
1173 status = sdstd_card_regread(sd, func, addr, nbytes, word); in sdioh_request_word()
1175 status = sdstd_card_regwrite(sd, func, addr, nbytes, *word); in sdioh_request_word()
1179 sdstd_3_set_data_state(sd, DATA_TRANSFER_IDLE); in sdioh_request_word()
1182 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_POST_DATA); in sdioh_request_word()
1184 sdstd_unlock(sd); in sdioh_request_word()
1190 sdioh_glom_post(sdioh_info_t *sd, uint8 *frame, void *pkt, uint len) in sdioh_glom_post() argument
1193 sd->glom_info.dma_buf_arr[sd->glom_info.count] = frame; in sdioh_glom_post()
1194 sd->glom_info.nbytes[sd->glom_info.count] = len; in sdioh_glom_post()
1196 if (sd->txglom_mode == SDPCM_TXGLOM_MDESC) { in sdioh_glom_post()
1197 sd->glom_info.dma_phys_arr[sd->glom_info.count] = DMA_MAP(sd->osh, in sdioh_glom_post()
1202 sd->glom_info.count++; in sdioh_glom_post()
1206 sdioh_glom_clear(sdioh_info_t *sd) in sdioh_glom_clear() argument
1210 if (sd->txglom_mode == SDPCM_TXGLOM_MDESC) { in sdioh_glom_clear()
1211 for (i = 0; i < sd->glom_info.count; i++) { in sdioh_glom_clear()
1212 DMA_UNMAP(sd->osh, in sdioh_glom_clear()
1213 sd->glom_info.dma_phys_arr[i], in sdioh_glom_clear()
1214 sd->glom_info.nbytes[i], in sdioh_glom_clear()
1218 sd->glom_info.count = 0; in sdioh_glom_clear()
1222 sdioh_set_mode(sdioh_info_t *sd, uint mode) in sdioh_set_mode() argument
1225 sd->txglom_mode = mode; in sdioh_set_mode()
1226 else if ((mode == SDPCM_TXGLOM_MDESC) && (sd->version == HOST_CONTR_VER_3)) in sdioh_set_mode()
1227 sd->txglom_mode = mode; in sdioh_set_mode()
1229 return (sd->txglom_mode); in sdioh_set_mode()
1240 sdioh_request_buffer(sdioh_info_t *sd, uint pio_dma, uint fix_inc, uint rw, uint func, in sdioh_request_buffer() argument
1248 bool local_blockmode = sd->sd_blockmode; in sdioh_request_buffer()
1251 sdstd_lock(sd); in sdioh_request_buffer()
1255 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_PRE_DATA); in sdioh_request_buffer()
1258 sdstd_3_set_data_state(sd, DATA_TRANSFER_ONGOING); in sdioh_request_buffer()
1262 ASSERT(sd->client_block_size[func]); in sdioh_request_buffer()
1267 sdioh_glom_post(sd, PKTDATA(sd->osh, pkt), pkt, PKTLEN(sd->osh, pkt)); in sdioh_request_buffer()
1268 pkt = PKTNEXT(sd->osh, pkt); in sdioh_request_buffer()
1274 buflen_u, sd->r_cnt, sd->t_cnt, pkt)); in sdioh_request_buffer()
1286 if ((sd->version == HOST_CONTR_VER_3) && sd_txglom) in sdioh_request_buffer()
1293 if (buflen > sd->client_block_size[func]) in sdioh_request_buffer()
1294 len = (len/sd->client_block_size[func]) * in sdioh_request_buffer()
1295 sd->client_block_size[func]; in sdioh_request_buffer()
1306 if ((localbuf = (uint8 *)MALLOC(sd->osh, len)) == NULL) { in sdioh_request_buffer()
1308 MALLOCED(sd->osh))); in sdioh_request_buffer()
1317 len = MIN(sd->client_block_size[func], buflen); in sdioh_request_buffer()
1320 if (sdstd_card_buf(sd, rw, func, fifo, addr, len, (uint32 *)buffer) != SUCCESS) { in sdioh_request_buffer()
1327 MFREE(sd->osh, localbuf, len); in sdioh_request_buffer()
1345 if (sd->glom_info.count != 0) in sdioh_request_buffer()
1352 sdstd_3_set_data_state(sd, DATA_TRANSFER_IDLE); in sdioh_request_buffer()
1355 sdstd_3_check_and_do_tuning(sd, CHECK_TUNING_POST_DATA); in sdioh_request_buffer()
1357 sdstd_unlock(sd); in sdioh_request_buffer()
1361 sdioh_glom_clear(sd); in sdioh_request_buffer()
1368 sdioh_gpioouten(sdioh_info_t *sd, uint32 gpio) in sdioh_gpioouten() argument
1379 val = sdstd_rreg16(sd, SD_GPIO_OE + offset); in sdioh_gpioouten()
1381 sdstd_wreg16(sd, SD_GPIO_OE + offset, val); in sdioh_gpioouten()
1387 sdioh_gpioout(sdioh_info_t *sd, uint32 gpio, bool enab) in sdioh_gpioout() argument
1398 val = sdstd_rreg16(sd, SD_GPIO_Reg + offset); in sdioh_gpioout()
1403 sdstd_wreg16(sd, SD_GPIO_Reg + offset, val); in sdioh_gpioout()
1409 sdioh_gpioin(sdioh_info_t *sd, uint32 gpio) in sdioh_gpioin() argument
1420 val = sdstd_rreg16(sd, SD_GPIO_Reg + offset); in sdioh_gpioin()
1427 sdioh_gpio_init(sdioh_info_t *sd) in sdioh_gpio_init() argument
1431 rev = sdstd_rreg16(sd, SD_HostControllerVersion) >> 8; in sdioh_gpio_init()
1439 sdstd_wreg16(sd, SD_GPIO_Enable, SDH_GPIO_ENABLE); in sdioh_gpio_init()
1440 sdstd_wreg16(sd, SD_GPIO_Enable + 2, SDH_GPIO_ENABLE); in sdioh_gpio_init()
1443 sdstd_wreg16(sd, SD_GPIO_OE, 0); in sdioh_gpio_init()
1444 sdstd_wreg16(sd, SD_GPIO_OE + 2, 0); in sdioh_gpio_init()
1450 sdioh_sleep(sdioh_info_t *sd, bool enab) in sdioh_sleep() argument
1456 sdstd_lock(sd); in sdioh_sleep()
1458 cmd_arg = SFIELD(cmd_arg, CMD14_RCA, sd->card_rca); in sdioh_sleep()
1468 if ((sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_14, cmd_arg)) == SUCCESS) { in sdioh_sleep()
1480 sdstd_cmd_getrsp(sd, &rsp1, 1); in sdioh_sleep()
1486 cmd_arg = SFIELD(0, CMD7_RCA, sd->card_rca); in sdioh_sleep()
1487 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_7, cmd_arg)) != SUCCESS) { in sdioh_sleep()
1493 sdstd_cmd_getrsp(sd, &rsp1, 1); in sdioh_sleep()
1503 sdstd_unlock(sd); in sdioh_sleep()
1514 sdstd_abort(sdioh_info_t *sd, uint func) in sdstd_abort() argument
1545 if (sd->sd_mode == SDIOH_MODE_SPI) { in sdstd_abort()
1557 while (GFIELD(sdstd_rreg(sd, SD_PresentState), PRES_CMD_INHIBIT)) { in sdstd_abort()
1560 __FUNCTION__, sdstd_rreg(sd, SD_PresentState))); in sdstd_abort()
1563 __FUNCTION__, sdstd_rreg(sd, SD_PresentState))); in sdstd_abort()
1572 if ((plain_intstatus = sdstd_rreg16(sd, SD_ErrorIntrStatus)) != 0) { in sdstd_abort()
1574 sdstd_wreg16(sd, SD_ErrorIntrStatus, plain_intstatus); in sdstd_abort()
1576 plain_intstatus = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_abort()
1590 sdstd_wreg(sd, SD_Arg0, cmd_arg); in sdstd_abort()
1591 sdstd_wreg16(sd, SD_Command, cmd_reg); in sdstd_abort()
1594 if (!sd->polled_mode) in sdstd_abort()
1600 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_abort()
1609 sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_abort()
1610 sdstd_rreg(sd, SD_PresentState))); in sdstd_abort()
1612 sdstd_wreg8(sd, SD_SoftwareReset, SFIELD(0, SW_RESET_CMD, 1)); in sdstd_abort()
1616 } while ((GFIELD(sdstd_rreg8(sd, SD_SoftwareReset), in sdstd_abort()
1631 sdstd_wreg16(sd, SD_IntrStatus, int_reg); in sdstd_abort()
1634 if ((plain_intstatus = sdstd_rreg16 (sd, SD_ErrorIntrStatus)) != 0) { in sdstd_abort()
1638 sdstd_rreg16(sd, SD_IntrStatus), in sdstd_abort()
1639 sdstd_rreg(sd, SD_PresentState))); in sdstd_abort()
1641 sdstd_wreg16(sd, SD_ErrorIntrStatus, plain_intstatus); in sdstd_abort()
1643 sdstd_wreg8(sd, SD_SoftwareReset, SFIELD(0, SW_RESET_DAT, 1)); in sdstd_abort()
1647 } while ((GFIELD(sdstd_rreg8(sd, SD_SoftwareReset), in sdstd_abort()
1668 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_abort()
1700 sdstd_wreg8(sd, SD_SoftwareReset, in sdstd_abort()
1705 rflags = sdstd_rreg8(sd, SD_SoftwareReset); in sdstd_abort()
1720 sdioh_abort(sdioh_info_t *sd, uint fnum) in sdioh_abort() argument
1724 sdstd_lock(sd); in sdioh_abort()
1725 ret = sdstd_abort(sd, fnum); in sdioh_abort()
1726 sdstd_unlock(sd); in sdioh_abort()
1732 sdioh_start(sdioh_info_t *sd, int stage) in sdioh_start() argument
1738 sdioh_stop(sdioh_info_t *sd) in sdioh_stop() argument
1744 sdioh_waitlockfree(sdioh_info_t *sd) in sdioh_waitlockfree() argument
1746 sdstd_waitlockfree(sd); in sdioh_waitlockfree()
1839 sdioh_test_diag(sdioh_info_t *sd) in sdioh_test_diag() argument
1850 sdstd_reset(sdioh_info_t *sd, bool host_reset, bool client_reset) in sdstd_reset() argument
1855 if (!sd) in sdstd_reset()
1858 sdstd_lock(sd); in sdstd_reset()
1860 if (client_reset && (sd->adapter_slot != -1)) { in sdstd_reset()
1861 if (sdstd_card_regwrite(sd, 0, SDIOD_CCCR_IOABORT, 1, 0x8) != SUCCESS) in sdstd_reset()
1865 sd->card_rca = 0; in sdstd_reset()
1871 sdstd_wreg8(sd, SD_SoftwareReset, regval); in sdstd_reset()
1874 } while ((sdstd_rreg8(sd, SD_SoftwareReset) & regval) && retries--); in sdstd_reset()
1878 sdstd_unlock(sd); in sdstd_reset()
1883 sd->sd_mode = SDIOH_MODE_SD1; in sdstd_reset()
1884 sdstd_set_dma_mode(sd, sd->sd_dma_mode); in sdstd_reset()
1886 sdstd_unlock(sd); in sdstd_reset()
1892 sdstd_devintr_off(sdioh_info_t *sd) in sdstd_devintr_off() argument
1894 sd_trace(("%s: %d\n", __FUNCTION__, sd->use_client_ints)); in sdstd_devintr_off()
1895 if (sd->use_client_ints) { in sdstd_devintr_off()
1896 sd->intmask &= ~CLIENT_INTR; in sdstd_devintr_off()
1897 sdstd_wreg16(sd, SD_IntrSignalEnable, sd->intmask); in sdstd_devintr_off()
1898 sdstd_rreg16(sd, SD_IntrSignalEnable); /* Sync readback */ in sdstd_devintr_off()
1904 sdstd_devintr_on(sdioh_info_t *sd) in sdstd_devintr_on() argument
1906 ASSERT(sd->lockcount == 0); in sdstd_devintr_on()
1907 sd_trace(("%s: %d\n", __FUNCTION__, sd->use_client_ints)); in sdstd_devintr_on()
1908 if (sd->use_client_ints) { in sdstd_devintr_on()
1909 if (sd->version < HOST_CONTR_VER_3) { in sdstd_devintr_on()
1910 uint16 status = sdstd_rreg16(sd, SD_IntrStatusEnable); in sdstd_devintr_on()
1911 sdstd_wreg16(sd, SD_IntrStatusEnable, SFIELD(status, INTSTAT_CARD_INT, 0)); in sdstd_devintr_on()
1912 sdstd_wreg16(sd, SD_IntrStatusEnable, status); in sdstd_devintr_on()
1915 sd->intmask |= CLIENT_INTR; in sdstd_devintr_on()
1916 sdstd_wreg16(sd, SD_IntrSignalEnable, sd->intmask); in sdstd_devintr_on()
1917 sdstd_rreg16(sd, SD_IntrSignalEnable); /* Sync readback */ in sdstd_devintr_on()
1924 sdstd_intrs_on(sdioh_info_t *sd, uint16 norm, uint16 err) in sdstd_intrs_on() argument
1928 sdstd_wreg16(sd, SD_ErrorIntrSignalEnable, err); in sdstd_intrs_on()
1931 sd->intmask |= norm; in sdstd_intrs_on()
1932 sdstd_wreg16(sd, SD_IntrSignalEnable, sd->intmask); in sdstd_intrs_on()
1934 sdstd_rreg16(sd, SD_IntrSignalEnable); /* Sync readback */ in sdstd_intrs_on()
1938 sdstd_intrs_off(sdioh_info_t *sd, uint16 norm, uint16 err) in sdstd_intrs_off() argument
1942 sdstd_wreg16(sd, SD_ErrorIntrSignalEnable, 0); in sdstd_intrs_off()
1945 sd->intmask &= ~norm; in sdstd_intrs_off()
1946 sdstd_wreg16(sd, SD_IntrSignalEnable, sd->intmask); in sdstd_intrs_off()
1948 sdstd_rreg16(sd, SD_IntrSignalEnable); /* Sync readback */ in sdstd_intrs_off()
1953 sdstd_host_init(sdioh_info_t *sd) in sdstd_host_init() argument
1967 if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_SI_IMAGE) { in sdstd_host_init()
1969 sd->controller_type = SDIOH_TYPE_ARASAN_HDK; in sdstd_host_init()
1972 sd->sd_dma_mode = DMA_MODE_SDMA; in sdstd_host_init()
1973 } else if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_BROADCOM) { in sdstd_host_init()
1975 sd->controller_type = SDIOH_TYPE_BCM27XX; in sdstd_host_init()
1977 } else if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_TI) { in sdstd_host_init()
1979 sd->controller_type = SDIOH_TYPE_TI_PCIXX21; in sdstd_host_init()
1981 } else if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_RICOH) { in sdstd_host_init()
1982 sd_info(("%s: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter\n", in sdstd_host_init()
1984 sd->controller_type = SDIOH_TYPE_RICOH_R5C822; in sdstd_host_init()
1986 } else if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_JMICRON) { in sdstd_host_init()
1989 sd->controller_type = SDIOH_TYPE_JMICRON; in sdstd_host_init()
1992 } else if ((OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) & 0xFFFF) == VENDOR_JINVANI) { in sdstd_host_init()
1995 sd->controller_type = SDIOH_TYPE_JINVANI_GOLD; in sdstd_host_init()
2006 first_bar = OSL_PCI_READ_CONFIG(sd->osh, SD_SlotInfo, 4) & 0x7; in sdstd_host_init()
2007 num_slots = (OSL_PCI_READ_CONFIG(sd->osh, SD_SlotInfo, 4) & 0xff) >> 4; in sdstd_host_init()
2015 if (OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) == in sdstd_host_init()
2019 OSL_PCI_WRITE_CONFIG(sd->osh, PCI_BAR0_WIN, 4, 0x18001000); in sdstd_host_init()
2027 sd->sd_dma_mode = DMA_MODE_ADMA2; in sdstd_host_init()
2033 if (sd->mem_space) { in sdstd_host_init()
2034 sdstd_reg_unmap(sd->osh, (ulong)sd->mem_space, SDIOH_REG_WINSZ); in sdstd_host_init()
2035 sd->mem_space = NULL; in sdstd_host_init()
2044 bar.LowPart = OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_BAR0 in sdstd_host_init()
2046 sd->mem_space = (volatile char *)sdstd_reg_map(sd->osh, in sdstd_host_init()
2049 bar = OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_BAR0 + (4*(slot + first_bar)), 4); in sdstd_host_init()
2050 sd->mem_space = (volatile char *)sdstd_reg_map(sd->osh, in sdstd_host_init()
2054 sd->adapter_slot = -1; in sdstd_host_init()
2057 card_ins = GFIELD(sdstd_rreg(sd, SD_PresentState), PRES_CARD_PRESENT); in sdstd_host_init()
2070 if (sd->mem_space) { in sdstd_host_init()
2071 sdstd_reg_unmap(sd->osh, (ulong)sd->mem_space, SDIOH_REG_WINSZ); in sdstd_host_init()
2072 sd->mem_space = NULL; in sdstd_host_init()
2084 bar.LowPart = OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_BAR0 + (4*(full_slot + first_bar)), 4); in sdstd_host_init()
2085 sd->mem_space = (volatile char *)sdstd_reg_map(sd->osh, (int32)&bar, SDIOH_REG_WINSZ); in sdstd_host_init()
2087 bar = OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_BAR0 + (4*(full_slot + first_bar)), 4); in sdstd_host_init()
2088 sd->mem_space = (volatile char *)sdstd_reg_map(sd->osh, (uintptr)bar, SDIOH_REG_WINSZ); in sdstd_host_init()
2094 OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_BAR0 + (4*(full_slot + first_bar)), 4), in sdstd_host_init()
2095 sd->mem_space)); in sdstd_host_init()
2097 sd->adapter_slot = full_slot; in sdstd_host_init()
2099 sd->version = sdstd_rreg16(sd, SD_HostControllerVersion) & 0xFF; in sdstd_host_init()
2100 switch (sd->version) { in sdstd_host_init()
2103 sdstd_rreg16(sd, SD_HostControllerVersion) >> 8)); in sdstd_host_init()
2107 sdstd_rreg16(sd, SD_HostControllerVersion) >> 8)); in sdstd_host_init()
2111 sdstd_rreg16(sd, SD_HostControllerVersion) >> 8)); in sdstd_host_init()
2115 __FUNCTION__, sd->version)); in sdstd_host_init()
2119 sd->caps = sdstd_rreg(sd, SD_Capabilities); /* Cache this for later use */ in sdstd_host_init()
2121 sd->caps3 = sdstd_rreg(sd, SD_Capabilities3); /* Cache this for later use */ in sdstd_host_init()
2122 sd3_trace(("sd3: %s: caps: 0x%x; MCCap:0x%x\n", __FUNCTION__, sd->caps, sd->curr_caps)); in sdstd_host_init()
2123 sd3_trace(("sd3: %s: caps3: 0x%x\n", __FUNCTION__, sd->caps3)); in sdstd_host_init()
2124 sd->curr_caps = sdstd_rreg(sd, SD_MaxCurCap); in sdstd_host_init()
2126 sd_info(("%s: caps: 0x%x; MCCap:0x%x\n", __FUNCTION__, sd->caps, sd->curr_caps)); in sdstd_host_init()
2128 sdstd_set_dma_mode(sd, sd->sd_dma_mode); in sdstd_host_init()
2131 if (OSL_PCI_READ_CONFIG(sd->osh, PCI_CFG_VID, 4) == in sdstd_host_init()
2133 sd_err(("* * * SDIO20H FPGA Build Date: 0x%04x\n", sdstd_rreg(sd, 0x110))); in sdstd_host_init()
2136 if (GFIELD(sd->caps, CAP_MAXBLOCK) == 0x3) { in sdstd_host_init()
2137 sd_info(("SD HOST CAPS: Max block size is INVALID\n")); in sdstd_host_init()
2139 sd_info(("SD HOST CAPS: Max block size is %d bytes\n", in sdstd_host_init()
2140 512 << GFIELD(sd->caps, CAP_MAXBLOCK))); in sdstd_host_init()
2143 sd_info(("SD HOST CAPS: 64-bit DMA is %ssupported.\n", in sdstd_host_init()
2144 GFIELD(sd->caps, CAP_64BIT_HOST) ? "" : "not ")); in sdstd_host_init()
2145 sd_info(("SD HOST CAPS: Suspend/Resume is %ssupported.\n", in sdstd_host_init()
2146 GFIELD(sd->caps, CAP_SUSPEND) ? "" : "not ")); in sdstd_host_init()
2148 sd_err(("SD HOST CAPS: SD Host supports ")); in sdstd_host_init()
2149 if (GFIELD(sd->caps, CAP_VOLT_3_3)) { in sdstd_host_init()
2151 if (GFIELD(sd->curr_caps, CAP_CURR_3_3)) { in sdstd_host_init()
2152 sd_err(("@%dmA\n", 4*GFIELD(sd->curr_caps, CAP_CURR_3_3))); in sdstd_host_init()
2155 if (GFIELD(sd->caps, CAP_VOLT_3_0)) { in sdstd_host_init()
2157 if (GFIELD(sd->curr_caps, CAP_CURR_3_0)) { in sdstd_host_init()
2158 sd_err(("@%dmA\n", 4*GFIELD(sd->curr_caps, CAP_CURR_3_0))); in sdstd_host_init()
2161 if (GFIELD(sd->caps, CAP_VOLT_1_8)) { in sdstd_host_init()
2163 if (GFIELD(sd->curr_caps, CAP_CURR_1_8)) { in sdstd_host_init()
2164 sd_err(("@%dmA\n", 4*GFIELD(sd->curr_caps, CAP_CURR_1_8))); in sdstd_host_init()
2170 sdstd_reset(sd, 1, 0); in sdstd_host_init()
2173 if ((reg8 = sdstd_rreg8(sd, SD_HostCntrl))) { in sdstd_host_init()
2181 sd->sd_mode = SDIOH_MODE_SD1; in sdstd_host_init()
2182 sd->polled_mode = TRUE; in sdstd_host_init()
2183 sd->host_init_done = TRUE; in sdstd_host_init()
2184 sd->card_init_done = FALSE; in sdstd_host_init()
2185 sd->adapter_slot = full_slot; in sdstd_host_init()
2189 sd->version = HOST_CONTR_VER_2; in sdstd_host_init()
2193 if (sd->version == HOST_CONTR_VER_3) { in sdstd_host_init()
2198 reg16 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_host_init()
2204 if ((GFIELD(sd->caps, CAP_VOLT_1_8)) && in sdstd_host_init()
2205 (GFIELD(sd->caps3, CAP3_SDR50_SUP) || in sdstd_host_init()
2206 GFIELD(sd->caps3, CAP3_SDR104_SUP) || in sdstd_host_init()
2207 GFIELD(sd->caps3, CAP3_DDR50_SUP))) in sdstd_host_init()
2208 sd->host_UHSISupported = 1; in sdstd_host_init()
2217 intmask = OSL_PCI_READ_CONFIG(sd->osh, PCI_INT_MASK, 4); in sdstd_host_init()
2219 OSL_PCI_WRITE_CONFIG(sd->osh, PCI_INT_MASK, 4, intmask); in sdstd_host_init()
2226 get_ocr(sdioh_info_t *sd, uint32 *cmd_arg, uint32 *cmd_rsp) in get_ocr() argument
2236 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_5, *cmd_arg)) in get_ocr()
2241 sdstd_cmd_getrsp(sd, cmd_rsp, 1); in get_ocr()
2252 sdstd_client_init(sdioh_info_t *sd) in sdstd_client_init() argument
2264 parse_caps(sd->caps, caps_buf, 500); in sdstd_client_init()
2269 sd_trace(("%s: Powering up slot %d\n", __FUNCTION__, sd->adapter_slot)); in sdstd_client_init()
2272 sdstd_wreg16(sd, SD_IntrStatus, 0x1fff); in sdstd_client_init()
2273 sdstd_wreg16(sd, SD_ErrorIntrStatus, 0x0fff); in sdstd_client_init()
2280 if (!sd->host_UHSISupported) in sdstd_client_init()
2281 sdstd_wreg16(sd, SD_IntrStatusEnable, 0x1ff); in sdstd_client_init()
2287 sdstd_wreg16(sd, SD_IntrStatusEnable, 0x0fff); in sdstd_client_init()
2289 sdstd_wreg16(sd, SD_ErrorIntrStatusEnable, 0xffff); in sdstd_client_init()
2291 sdstd_wreg16(sd, SD_IntrSignalEnable, 0); /* Disable ints for now. */ in sdstd_client_init()
2293 if (sd->host_UHSISupported) { in sdstd_client_init()
2295 powerstat = sdstd_start_power(sd, 1); in sdstd_client_init()
2312 if (TRUE != sdstd_start_power(sd, 0)) { in sdstd_client_init()
2317 if (sd->num_funcs == 0) { in sdstd_client_init()
2323 if (sd->sd_mode == SDIOH_MODE_SPI) { in sdstd_client_init()
2325 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_0, cmd_arg)) in sdstd_client_init()
2332 if (sd->sd_mode != SDIOH_MODE_SPI) { in sdstd_client_init()
2337 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_3, cmd_arg)) in sdstd_client_init()
2344 sdstd_cmd_getrsp(sd, &cmd_rsp, 1); in sdstd_client_init()
2355 sd->card_rca = GFIELD(cmd_rsp, RSP6_IO_RCA); in sdstd_client_init()
2356 sd_info(("RCA is 0x%x\n", sd->card_rca)); in sdstd_client_init()
2362 cmd_arg = SFIELD(0, CMD7_RCA, sd->card_rca); in sdstd_client_init()
2363 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_7, cmd_arg)) in sdstd_client_init()
2368 sdstd_cmd_getrsp(sd, &cmd_rsp, 1); in sdstd_client_init()
2380 if (sdstd_card_regread (sd, 0, SDIOD_CCCR_BICTRL, 1, ®data) != SUCCESS) { in sdstd_client_init()
2386 if (sdstd_card_regwrite (sd, 0, SDIOD_CCCR_BICTRL, 1, regdata) != SUCCESS) { in sdstd_client_init()
2391 sdstd_card_enablefuncs(sd); in sdstd_client_init()
2393 if (!sdstd_bus_width(sd, sd_sdmode)) { in sdstd_client_init()
2398 set_client_block_size(sd, 1, sd_f1_blocksize); in sdstd_client_init()
2401 if (sd->num_funcs >= 2) { in sdstd_client_init()
2403 set_client_block_size(sd, 2, sd_f2_blocksize /* BLOCK_SIZE_4328 */); in sdstd_client_init()
2409 if (sdstd_card_regwrite(sd, 0, SDIOD_CCCR_INTEN, 1, in sdstd_client_init()
2417 if (sdstd_3_clock_wrapper(sd) != SUCCESS) { in sdstd_client_init()
2423 if (sdstd_clock_wrapper(sd)) { in sdstd_client_init()
2428 sd->card_init_done = TRUE; in sdstd_client_init()
2434 sdstd_clock_wrapper(sdioh_info_t *sd) in sdstd_clock_wrapper() argument
2438 sdstd_set_highspeed_mode(sd, (bool)sd_hiok); in sdstd_clock_wrapper()
2440 if (FALSE == sdstd_start_clock(sd, (uint16)sd_divisor)) { in sdstd_clock_wrapper()
2448 sdstd_3_clock_wrapper(sdioh_info_t *sd) in sdstd_3_clock_wrapper() argument
2452 if (sd->card_UHSI_voltage_Supported) { in sdstd_3_clock_wrapper()
2454 retclk = sdstd_3_get_matching_uhsi_clkmode(sd, sd_uhsimode); in sdstd_3_clock_wrapper()
2460 retclk = sdstd_3_get_matching_uhsi_clkmode(sd, SD3CLKMODE_AUTO); in sdstd_3_clock_wrapper()
2483 if (BCME_OK != sdstd_3_set_highspeed_uhsi_mode(sd, sd_uhsimode)) { in sdstd_3_clock_wrapper()
2489 if (SUCCESS != sdstd_clock_wrapper(sd)) { in sdstd_3_clock_wrapper()
2497 if (SUCCESS != sdstd_clock_wrapper(sd)) { in sdstd_3_clock_wrapper()
2506 sdstd_3_clk_tuning(sdioh_info_t *sd, uint32 sd3ClkMode) in sdstd_3_clk_tuning() argument
2518 if (!sd->sd3_tuning_reqd) { in sdstd_3_clk_tuning()
2528 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2530 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_clk_tuning()
2535 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_19, 0)) in sdstd_3_clk_tuning()
2538 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2541 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_clk_tuning()
2548 bufready = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_3_clk_tuning()
2563 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2566 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_clk_tuning()
2580 l_val_1 = sdstd_rreg(sd, SD_BufferDataPort0); in sdstd_3_clk_tuning()
2588 sdstd_wreg16(sd, SD_IntrStatus, bufready); in sdstd_3_clk_tuning()
2594 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2604 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2607 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_clk_tuning()
2612 val2 = sdstd_rreg(sd, SD3_Tuning_Info_Register); in sdstd_3_clk_tuning()
2622 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2626 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_clk_tuning()
2629 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_clk_tuning()
2638 sdstd_3_enable_retuning_int(sdioh_info_t *sd) in sdstd_3_enable_retuning_int() argument
2643 sdstd_os_lock_irqsave(sd, &flags); in sdstd_3_enable_retuning_int()
2644 raw_int = sdstd_rreg16(sd, SD_IntrSignalEnable); in sdstd_3_enable_retuning_int()
2645 sdstd_wreg16(sd, SD_IntrSignalEnable, (raw_int | HC_INTR_RETUNING)); in sdstd_3_enable_retuning_int()
2647 raw_int = sdstd_rreg16(sd, SD_IntrStatusEnable); in sdstd_3_enable_retuning_int()
2648 sdstd_wreg16(sd, SD_IntrStatusEnable, (raw_int | HC_INTR_RETUNING)); in sdstd_3_enable_retuning_int()
2649 sdstd_os_unlock_irqrestore(sd, &flags); in sdstd_3_enable_retuning_int()
2653 sdstd_3_disable_retuning_int(sdioh_info_t *sd) in sdstd_3_disable_retuning_int() argument
2658 sdstd_os_lock_irqsave(sd, &flags); in sdstd_3_disable_retuning_int()
2659 sd->intmask &= ~HC_INTR_RETUNING; in sdstd_3_disable_retuning_int()
2660 raw_int = sdstd_rreg16(sd, SD_IntrSignalEnable); in sdstd_3_disable_retuning_int()
2661 sdstd_wreg16(sd, SD_IntrSignalEnable, (raw_int & (~HC_INTR_RETUNING))); in sdstd_3_disable_retuning_int()
2663 raw_int = sdstd_rreg16(sd, SD_IntrStatusEnable); in sdstd_3_disable_retuning_int()
2664 sdstd_wreg16(sd, SD_IntrStatusEnable, (raw_int & (~HC_INTR_RETUNING))); in sdstd_3_disable_retuning_int()
2665 sdstd_os_unlock_irqrestore(sd, &flags); in sdstd_3_disable_retuning_int()
2669 sdstd_3_is_retuning_int_set(sdioh_info_t *sd) in sdstd_3_is_retuning_int_set() argument
2673 raw_int = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_3_is_retuning_int_set()
2689 sdstd_3_set_highspeed_uhsi_mode(sdioh_info_t *sd, int sd3ClkMode) in sdstd_3_set_highspeed_uhsi_mode() argument
2699 hc_reg8 = sdstd_rreg8(sd, SD_HostCntrl); in sdstd_3_set_highspeed_uhsi_mode()
2701 if (HOST_SDR_UNSUPP == sd->global_UHSI_Supp) { in sdstd_3_set_highspeed_uhsi_mode()
2709 if (!sdstd_3_get_matching_drvstrn(sd, sd3ClkMode, &drvstrn, &presetval)) { in sdstd_3_set_highspeed_uhsi_mode()
2716 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_DRIVER_STRENGTH, in sdstd_3_set_highspeed_uhsi_mode()
2723 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_3_set_highspeed_uhsi_mode()
2739 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_3_set_highspeed_uhsi_mode()
2745 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_3_set_highspeed_uhsi_mode()
2757 /* SD Clock Enable = 0 */ in sdstd_3_set_highspeed_uhsi_mode()
2758 sdstd_wreg16(sd, SD_ClockCntrl, in sdstd_3_set_highspeed_uhsi_mode()
2759 sdstd_rreg16(sd, SD_ClockCntrl) & ~((uint16)0x4)); in sdstd_3_set_highspeed_uhsi_mode()
2764 sdstd_wreg8(sd, SD_HostCntrl, hc_reg8); in sdstd_3_set_highspeed_uhsi_mode()
2767 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_set_highspeed_uhsi_mode()
2780 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_set_highspeed_uhsi_mode()
2785 if (FALSE == sdstd_start_clock(sd, GFIELD(presetval, PRESET_CLK_DIV))) { in sdstd_3_set_highspeed_uhsi_mode()
2792 if (SD3_TUNING_REQD(sd, sd3ClkMode)) { in sdstd_3_set_highspeed_uhsi_mode()
2794 sd->sd3_tuning_reqd = TRUE; in sdstd_3_set_highspeed_uhsi_mode()
2796 sdstd_3_start_tuning(sd); in sdstd_3_set_highspeed_uhsi_mode()
2799 sd->sd3_tuning_reqd = FALSE; in sdstd_3_set_highspeed_uhsi_mode()
2806 void sdstd_3_check_and_do_tuning(sdioh_info_t *sd, int tuning_param) in sdstd_3_check_and_do_tuning() argument
2810 if (!sd->sd3_tuning_disable && sd->sd3_tuning_reqd) { in sdstd_3_check_and_do_tuning()
2813 if (sd->sd3_tun_state == TUNING_ONGOING) { in sdstd_3_check_and_do_tuning()
2816 while ((GFIELD(sdstd_rreg(sd, SD3_HostCntrl2), in sdstd_3_check_and_do_tuning()
2828 } else if (sd->sd3_tun_state == TUNING_START) { in sdstd_3_check_and_do_tuning()
2832 sdstd_3_start_tuning(sd); in sdstd_3_check_and_do_tuning()
2835 if (sd->sd3_tun_state == TUNING_START_AFTER_DAT) { in sdstd_3_check_and_do_tuning()
2838 sdstd_3_start_tuning(sd); in sdstd_3_check_and_do_tuning()
2844 bool sdstd_3_check_and_set_retuning(sdioh_info_t *sd) in sdstd_3_check_and_set_retuning() argument
2849 if ((sd->sd3_tun_state == TUNING_START) || in sdstd_3_check_and_set_retuning()
2850 (sd->sd3_tun_state == TUNING_ONGOING) || in sdstd_3_check_and_set_retuning()
2851 (sd->sd3_tun_state == TUNING_START_AFTER_DAT)) { in sdstd_3_check_and_set_retuning()
2856 if (sd->sd3_dat_state == DATA_TRANSFER_IDLE) { in sdstd_3_check_and_set_retuning()
2857 sd->sd3_tun_state = TUNING_START; /* tuning to be started by the tasklet */ in sdstd_3_check_and_set_retuning()
2861 sd->sd3_tun_state = TUNING_START_AFTER_DAT; in sdstd_3_check_and_set_retuning()
2866 int sdstd_3_get_data_state(sdioh_info_t *sd) in sdstd_3_get_data_state() argument
2868 return sd->sd3_dat_state; in sdstd_3_get_data_state()
2871 void sdstd_3_set_data_state(sdioh_info_t *sd, int state) in sdstd_3_set_data_state() argument
2873 sd->sd3_dat_state = state; in sdstd_3_set_data_state()
2876 int sdstd_3_get_tune_state(sdioh_info_t *sd) in sdstd_3_get_tune_state() argument
2878 return sd->sd3_tun_state; in sdstd_3_get_tune_state()
2881 void sdstd_3_set_tune_state(sdioh_info_t *sd, int state) in sdstd_3_set_tune_state() argument
2883 sd->sd3_tun_state = state; in sdstd_3_set_tune_state()
2886 uint8 sdstd_3_get_tuning_exp(sdioh_info_t *sd) in sdstd_3_get_tuning_exp() argument
2889 return GFIELD(sd->caps3, CAP3_RETUNING_TC); in sdstd_3_get_tuning_exp()
2895 uint32 sdstd_3_get_uhsi_clkmode(sdioh_info_t *sd) in sdstd_3_get_uhsi_clkmode() argument
2913 sdstd_3_get_matching_drvstrn(sdioh_info_t *sd, int sd3_requested_clkmode, in sdstd_3_get_matching_drvstrn() argument
2924 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_DRIVER_STRENGTH, in sdstd_3_get_matching_drvstrn()
2934 *presetval = sdstd_rreg16(sd, presetreg); in sdstd_3_get_matching_drvstrn()
2996 sdstd_3_get_matching_uhsi_clkmode(sdioh_info_t *sd, int sd3_requested_clkmode) in sdstd_3_get_matching_uhsi_clkmode() argument
3006 sd->global_UHSI_Supp = HOST_SDR_UNSUPP; in sdstd_3_get_matching_uhsi_clkmode()
3011 sd->global_UHSI_Supp = HOST_SDR_12_25; in sdstd_3_get_matching_uhsi_clkmode()
3015 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_UHSI_SUPPORT, in sdstd_3_get_matching_uhsi_clkmode()
3028 if (!(GFIELD(sd->caps3, CAP3_30CLKCAP) & speedmask)) { in sdstd_3_get_matching_uhsi_clkmode()
3031 sd3_requested_clkmode, GFIELD(sd->caps3, CAP3_30CLKCAP))); in sdstd_3_get_matching_uhsi_clkmode()
3047 if (!sdstd_3_get_matching_drvstrn(sd, sd3_requested_clkmode, in sdstd_3_get_matching_uhsi_clkmode()
3054 sd->global_UHSI_Supp = HOST_SDR_50_104_DDR; in sdstd_3_get_matching_uhsi_clkmode()
3059 /* sd->global_UHSI_Supp = TRUE; on success */ in sdstd_3_get_matching_uhsi_clkmode()
3065 sdstd_3_sigvoltswitch_proc(sdioh_info_t *sd) in sdstd_3_sigvoltswitch_proc() argument
3074 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_11, 0)) in sdstd_3_sigvoltswitch_proc()
3081 sdstd_cmd_getrsp(sd, &cmd_rsp, 1); in sdstd_3_sigvoltswitch_proc()
3091 /* SD Clock Enable = 0 */ in sdstd_3_sigvoltswitch_proc()
3092 sdstd_wreg16(sd, SD_ClockCntrl, in sdstd_3_sigvoltswitch_proc()
3093 sdstd_rreg16(sd, SD_ClockCntrl) & ~((uint16)0x4)); in sdstd_3_sigvoltswitch_proc()
3096 presst = sdstd_rreg(sd, SD_PresentState); in sdstd_3_sigvoltswitch_proc()
3103 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_sigvoltswitch_proc()
3105 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_3_sigvoltswitch_proc()
3111 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_3_sigvoltswitch_proc()
3118 /* SD Clock Enable = 1 */ in sdstd_3_sigvoltswitch_proc()
3119 val1 = sdstd_rreg16(sd, SD_ClockCntrl); in sdstd_3_sigvoltswitch_proc()
3120 sdstd_wreg16(sd, SD_ClockCntrl, val1 | 0x4); in sdstd_3_sigvoltswitch_proc()
3126 presst = sdstd_rreg(sd, SD_PresentState); in sdstd_3_sigvoltswitch_proc()
3136 sdstd_set_highspeed_mode(sdioh_info_t *sd, bool HSMode) in sdstd_set_highspeed_mode() argument
3144 reg8 = sdstd_rreg8(sd, SD_HostCntrl); in sdstd_set_highspeed_mode()
3147 /* The Jinvani SD Gold Host forces the highest clock rate in high-speed mode */ in sdstd_set_highspeed_mode()
3148 /* Only enable high-speed mode if the SD clock divisor is 1. */ in sdstd_set_highspeed_mode()
3149 if (sd->controller_type == SDIOH_TYPE_JINVANI_GOLD) { in sdstd_set_highspeed_mode()
3157 if (sd_hiok && (GFIELD(sd->caps, CAP_HIGHSPEED)) == 0) { in sdstd_set_highspeed_mode()
3164 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_set_highspeed_mode()
3175 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_set_highspeed_mode()
3180 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_set_highspeed_mode()
3197 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_set_highspeed_mode()
3203 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_SPEED_CONTROL, in sdstd_set_highspeed_mode()
3213 if ((sd->host_UHSISupported) && (sd->card_UHSI_voltage_Supported)) { in sdstd_set_highspeed_mode()
3218 if ((status = sdstd_card_regread(sd, 0, SDIOD_CCCR_DRIVER_STRENGTH, in sdstd_set_highspeed_mode()
3229 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_DRIVER_STRENGTH, in sdstd_set_highspeed_mode()
3237 sdstd_wreg8(sd, SD_HostCntrl, reg8); in sdstd_set_highspeed_mode()
3248 sdstd_set_dma_mode(sdioh_info_t *sd, int8 dma_mode) in sdstd_set_dma_mode() argument
3251 int8 prev_dma_mode = sd->sd_dma_mode; in sdstd_set_dma_mode()
3257 if (GFIELD(sd->caps, CAP_ADMA2)) { in sdstd_set_dma_mode()
3258 sd->sd_dma_mode = DMA_MODE_ADMA2; in sdstd_set_dma_mode()
3260 } else if (GFIELD(sd->caps, CAP_ADMA1)) { in sdstd_set_dma_mode()
3261 sd->sd_dma_mode = DMA_MODE_ADMA1; in sdstd_set_dma_mode()
3263 } else if (GFIELD(sd->caps, CAP_DMA)) { in sdstd_set_dma_mode()
3264 sd->sd_dma_mode = DMA_MODE_SDMA; in sdstd_set_dma_mode()
3266 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3270 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3273 if (GFIELD(sd->caps, CAP_DMA)) { in sdstd_set_dma_mode()
3274 sd->sd_dma_mode = DMA_MODE_SDMA; in sdstd_set_dma_mode()
3277 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3281 if (GFIELD(sd->caps, CAP_ADMA1)) { in sdstd_set_dma_mode()
3282 sd->sd_dma_mode = DMA_MODE_ADMA1; in sdstd_set_dma_mode()
3286 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3290 if (GFIELD(sd->caps, CAP_ADMA2)) { in sdstd_set_dma_mode()
3291 sd->sd_dma_mode = DMA_MODE_ADMA2; in sdstd_set_dma_mode()
3295 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3300 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3305 sd->sd_dma_mode = DMA_MODE_NONE; in sdstd_set_dma_mode()
3310 sdstd_wreg(sd, SD_SysAddr, 0); in sdstd_set_dma_mode()
3312 sd_err(("%s: %s mode selected.\n", __FUNCTION__, dma_mode_description[sd->sd_dma_mode])); in sdstd_set_dma_mode()
3314 reg8 = sdstd_rreg8(sd, SD_HostCntrl); in sdstd_set_dma_mode()
3316 sdstd_wreg8(sd, SD_HostCntrl, reg8); in sdstd_set_dma_mode()
3324 print_regs(sdioh_info_t *sd) in print_regs() argument
3332 reg8 = sdstd_rreg8(sd, SD_BlockSize); in print_regs()
3335 reg8 = sdstd_rreg8(sd, SD_BlockCount); in print_regs()
3338 reg8 = sdstd_rreg8(sd, SD_BlockSize); in print_regs()
3341 reg8 = sdstd_rreg8(sd, SD_TransferMode); in print_regs()
3344 reg8 = sdstd_rreg8(sd, SD_HostCntrl); in print_regs()
3347 reg32 = sdstd_rreg(sd, SD_PresentState); in print_regs()
3350 reg8 = sdstd_rreg8(sd, SD_PwrCntrl); in print_regs()
3353 reg8 = sdstd_rreg8(sd, SD_BlockGapCntrl); in print_regs()
3356 reg8 = sdstd_rreg8(sd, SD_WakeupCntrl); in print_regs()
3359 reg16 = sdstd_rreg16(sd, SD_ClockCntrl); in print_regs()
3362 reg8 = sdstd_rreg8(sd, SD_TimeoutCntrl); in print_regs()
3365 reg8 = sdstd_rreg8(sd, SD_SoftwareReset); in print_regs()
3368 reg16 = sdstd_rreg16(sd, SD_IntrStatus); in print_regs()
3371 reg16 = sdstd_rreg16(sd, SD_ErrorIntrStatus); in print_regs()
3374 reg16 = sdstd_rreg16(sd, SD_IntrStatusEnable); in print_regs()
3377 reg16 = sdstd_rreg16(sd, SD_ErrorIntrStatusEnable); in print_regs()
3380 reg16 = sdstd_rreg16(sd, SD_IntrSignalEnable); in print_regs()
3383 reg16 = sdstd_rreg16(sd, SD_ErrorIntrSignalEnable); in print_regs()
3386 reg32 = sdstd_rreg(sd, SD_Capabilities); in print_regs()
3389 reg32 = sdstd_rreg(sd, SD_MaxCurCap); in print_regs()
3392 reg32 = sdstd_rreg(sd, SD_Capabilities3); in print_regs()
3395 reg16 = sdstd_rreg16(sd, SD3_HostCntrl2); in print_regs()
3401 presetreg, sdstd_rreg16(sd, presetreg)); in print_regs()
3404 reg16 = sdstd_rreg16(sd, SD_SlotInterruptStatus); in print_regs()
3407 reg16 = sdstd_rreg16(sd, SD_HostControllerVersion); in print_regs()
3472 sdstd_start_clock(sdioh_info_t *sd, uint16 new_sd_divisor) in sdstd_start_clock() argument
3481 sdstd_wreg16(sd, SD_ClockCntrl, in sdstd_start_clock()
3482 sdstd_rreg16(sd, SD_ClockCntrl) & ~((uint16)0x4)); /* Disable the HC clock */ in sdstd_start_clock()
3485 if (sd->host_UHSISupported) { in sdstd_start_clock()
3511 if (sd->controller_type == SDIOH_TYPE_JINVANI_GOLD) { in sdstd_start_clock()
3516 sd_info(("Clock control is 0x%x\n", sdstd_rreg16(sd, SD_ClockCntrl))); in sdstd_start_clock()
3517 if (sd->host_UHSISupported) { in sdstd_start_clock()
3526 sdstd_mod_reg16(sd, SD_ClockCntrl, 0xffC0, val1); in sdstd_start_clock()
3529 sdstd_mod_reg16(sd, SD_ClockCntrl, 0xff00, divisor); in sdstd_start_clock()
3536 __FUNCTION__, GFIELD(sd->caps, CAP_BASECLK)*1000000/new_sd_divisor)); in sdstd_start_clock()
3538 sd_err(("Using Primary Clock Freq of %d MHz\n", GFIELD(sd->caps, CAP_BASECLK))); in sdstd_start_clock()
3539 sd_info(("Primary Clock Freq = %d MHz\n", GFIELD(sd->caps, CAP_BASECLK))); in sdstd_start_clock()
3540 if (GFIELD(sd->caps, CAP_TO_CLKFREQ) == 50) { in sdstd_start_clock()
3544 } else if (GFIELD(sd->caps, CAP_TO_CLKFREQ) == 48) { in sdstd_start_clock()
3548 } else if (GFIELD(sd->caps, CAP_TO_CLKFREQ) == 33) { in sdstd_start_clock()
3552 } else if (GFIELD(sd->caps, CAP_TO_CLKFREQ) == 31) { in sdstd_start_clock()
3556 } else if (GFIELD(sd->caps, CAP_TO_CLKFREQ) == 8) { in sdstd_start_clock()
3560 } else if (sd->controller_type == SDIOH_TYPE_BCM27XX) { in sdstd_start_clock()
3564 GFIELD(sd->caps, CAP_BASECLK))); in sdstd_start_clock()
3565 sd_err(("Consult SD Host Controller Spec: Clock Control Register\n")); in sdstd_start_clock()
3569 sdstd_or_reg16(sd, SD_ClockCntrl, 0x1); /* Enable the clock */ in sdstd_start_clock()
3572 rc = (sdstd_rreg16(sd, SD_ClockCntrl) & 2); in sdstd_start_clock()
3577 rc = (sdstd_rreg16(sd, SD_ClockCntrl) & 2); in sdstd_start_clock()
3586 sdstd_or_reg16(sd, SD_ClockCntrl, 0x4); in sdstd_start_clock()
3594 if (GFIELD(sd->caps, CAP_BASECLK) < 50) in sdstd_start_clock()
3607 regdata = sdstd_rreg16(sd, SD_ErrorIntrStatusEnable); in sdstd_start_clock()
3608 sdstd_wreg16(sd, SD_ErrorIntrStatusEnable, (regdata & ~ERRINT_DATA_TIMEOUT_BIT)); in sdstd_start_clock()
3609 sdstd_wreg8(sd, SD_TimeoutCntrl, (uint8)toval); in sdstd_start_clock()
3610 sdstd_wreg16(sd, SD_ErrorIntrStatusEnable, regdata); in sdstd_start_clock()
3616 regdata = sdstd_rreg16(sd, SD_ErrorIntrStatusEnable); in sdstd_start_clock()
3617 sdstd_wreg16(sd, SD_ErrorIntrStatusEnable, (regdata & ~ERRINT_DATA_TIMEOUT_BIT)); in sdstd_start_clock()
3622 sd_info(("Final Clock control is 0x%x\n", sdstd_rreg16(sd, SD_ClockCntrl))); in sdstd_start_clock()
3639 sdstd_start_power(sdioh_info_t *sd, int volts_req) in sdstd_start_power() argument
3652 sd->card_UHSI_voltage_Supported = FALSE; in sdstd_start_power()
3661 sdstd_wreg8(sd, SD_PwrCntrl, 0); in sdstd_start_power()
3672 if (GFIELD(sd->caps, CAP_VOLT_1_8)) { in sdstd_start_power()
3686 if (GFIELD(sd->caps, CAP_VOLT_3_0)) { in sdstd_start_power()
3699 if (GFIELD(sd->caps, CAP_VOLT_3_3)) { in sdstd_start_power()
3720 sdstd_wreg8(sd, SD_PwrCntrl, pwr); /* Set Voltage level */ in sdstd_start_power()
3725 * PR101766 : BRCM SDIO3.0 card is an embedded SD device. It is not a SD card. in sdstd_start_power()
3729 if ((sd->version == HOST_CONTR_VER_3) && (volts == 5)) { in sdstd_start_power()
3730 val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_start_power()
3732 sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_start_power()
3743 baseclk = GFIELD(sd->caps, CAP_BASECLK); in sdstd_start_power()
3746 if (sd->host_UHSISupported) { in sdstd_start_power()
3749 if (GFIELD(sd->caps3, CAP3_CLK_MULT) != 0) { in sdstd_start_power()
3775 if (!sdstd_start_clock(sd, init_divider)) { in sdstd_start_power()
3785 if (get_ocr(sd, &cmd_arg, &cmd_rsp) != SUCCESS) { in sdstd_start_power()
3802 sd->num_funcs = GFIELD(cmd_rsp, RSP4_NUM_FUNCS); in sdstd_start_power()
3817 if ((sd->host_UHSISupported) && (volts == 5)) { in sdstd_start_power()
3822 get_ocr(sd, &cmd_arg, &cmd_rsp); in sdstd_start_power()
3825 if ((sd->host_UHSISupported)) { in sdstd_start_power()
3828 if (sdstd_3_sigvoltswitch_proc(sd)) { in sdstd_start_power()
3835 sd->card_UHSI_voltage_Supported = TRUE; in sdstd_start_power()
3845 * sd->card_UHSI_voltage_Supported = TRUE; in sdstd_start_power()
3847 * val1 = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_start_power()
3849 * sdstd_wreg16(sd, SD3_HostCntrl2, val1); in sdstd_start_power()
3852 __FUNCTION__, sd->host_UHSISupported, volts)); in sdstd_start_power()
3862 sdstd_bus_width(sdioh_info_t *sd, int new_mode) in sdstd_bus_width() argument
3869 if (sd->sd_mode == new_mode) { in sdstd_bus_width()
3875 if ((status = sdstd_card_regread (sd, 0, SDIOD_CCCR_BICTRL, 1, ®data)) != SUCCESS) in sdstd_bus_width()
3887 if ((status = sdstd_card_regwrite (sd, 0, SDIOD_CCCR_BICTRL, 1, regdata)) != SUCCESS) in sdstd_bus_width()
3890 if (sd->host_UHSISupported) { in sdstd_bus_width()
3894 if ((status = sdstd_card_regread (sd, 0, SDIOD_CCCR_INTR_EXTN, 1, in sdstd_bus_width()
3898 host_asyncint = sdstd_rreg16(sd, SD3_HostCntrl2); in sdstd_bus_width()
3903 (GFIELD(sd->caps, CAP_ASYNCINT_SUP))) { in sdstd_bus_width()
3907 if ((status = sdstd_card_regwrite (sd, 0, in sdstd_bus_width()
3915 sdstd_wreg16(sd, SD3_HostCntrl2, host_asyncint); in sdstd_bus_width()
3925 reg8 = sdstd_rreg8(sd, SD_HostCntrl) & ~SD4_MODE; in sdstd_bus_width()
3928 sdstd_wreg8(sd, SD_HostCntrl, reg8); in sdstd_bus_width()
3930 sd->sd_mode = new_mode; in sdstd_bus_width()
3936 sdstd_driver_init(sdioh_info_t *sd) in sdstd_driver_init() argument
3939 sd->sd3_tuning_reqd = FALSE; in sdstd_driver_init()
3940 sd->sd3_tuning_disable = FALSE; in sdstd_driver_init()
3941 if ((sdstd_host_init(sd)) != SUCCESS) { in sdstd_driver_init()
3946 if ((sd->controller_type == SDIOH_TYPE_RICOH_R5C822) && (sd->version == HOST_CONTR_VER_3)) in sdstd_driver_init()
3948 sdstd_wreg16(sd, SD3_WL_BT_reset_register, 0x8); in sdstd_driver_init()
3950 sdstd_wreg16(sd, SD3_WL_BT_reset_register, 0x0); in sdstd_driver_init()
3954 if (sdstd_client_init(sd) != SUCCESS) { in sdstd_driver_init()
3959 if ((TRUE != sd3_sw_override1) && SD3_TUNING_REQD(sd, sd_uhsimode)) { in sdstd_driver_init()
3960 sd->sd3_tuning_reqd = TRUE; in sdstd_driver_init()
3963 sdstd_3_osinit_tuning(sd); in sdstd_driver_init()
3966 if (GFIELD(sd->caps3, CAP3_RETUNING_MODES)) { in sdstd_driver_init()
3968 sd->intmask |= HC_INTR_RETUNING; in sdstd_driver_init()
3969 sdstd_wreg16(sd, SD_IntrSignalEnable, sd->intmask); in sdstd_driver_init()
3972 sdstd_rreg16(sd, SD_IntrSignalEnable); /* Sync readback */ in sdstd_driver_init()
3981 sdstd_get_cisaddr(sdioh_info_t *sd, uint32 regaddr) in sdstd_get_cisaddr() argument
3988 if ((sdstd_card_regread (sd, 0, regaddr, 1, ®data)) != SUCCESS) in sdstd_get_cisaddr()
4001 sdstd_card_enablefuncs(sdioh_info_t *sd) in sdstd_card_enablefuncs() argument
4011 sd->com_cis_ptr = sdstd_get_cisaddr(sd, SDIOD_CCCR_CISPTR_0); in sdstd_card_enablefuncs()
4012 sd->func_cis_ptr[0] = sd->com_cis_ptr; in sdstd_card_enablefuncs()
4013 sd_info(("%s: Card's Common CIS Ptr = 0x%x\n", __FUNCTION__, sd->com_cis_ptr)); in sdstd_card_enablefuncs()
4017 func <= sd->num_funcs; func++, fbraddr += SDIOD_FBR_SIZE) { in sdstd_card_enablefuncs()
4018 sd->func_cis_ptr[func] = sdstd_get_cisaddr(sd, SDIOD_FBR_CISPTR_0 + fbraddr); in sdstd_card_enablefuncs()
4020 __FUNCTION__, func, sd->func_cis_ptr[func])); in sdstd_card_enablefuncs()
4025 if ((status = sdstd_card_regwrite(sd, 0, SDIOD_CCCR_IOEN, 1, regdata)) != SUCCESS) in sdstd_card_enablefuncs()
4033 sdstd_card_regread(sdioh_info_t *sd, int func, uint32 regaddr, int regsize, uint32 *data) in sdstd_card_regread() argument
4040 if (sdstd_rreg16 (sd, SD_ErrorIntrStatus) != 0) { in sdstd_card_regread()
4042 __FUNCTION__, sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_regread()
4043 sdstd_rreg16(sd, SD_IntrStatus))); in sdstd_card_regread()
4056 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_52, cmd_arg)) in sdstd_card_regread()
4060 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_card_regread()
4061 if (sdstd_rreg16(sd, SD_ErrorIntrStatus) != 0) { in sdstd_card_regread()
4063 __FUNCTION__, sdstd_rreg16(sd, SD_ErrorIntrStatus))); in sdstd_card_regread()
4084 sd->data_xfer_count = regsize; in sdstd_card_regread()
4089 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_53, cmd_arg)) in sdstd_card_regread()
4093 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_card_regread()
4103 if (sd->polled_mode) { in sdstd_card_regread()
4109 sdstd_os_yield(sd); in sdstd_card_regread()
4110 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_regread()
4117 sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_regread()
4118 sdstd_rreg(sd, SD_PresentState))); in sdstd_card_regread()
4119 sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg); in sdstd_card_regread()
4124 sdstd_wreg16(sd, SD_IntrStatus, SFIELD(0, INTSTAT_BUF_READ_READY, 1)); in sdstd_card_regread()
4126 *data = sdstd_rreg16(sd, SD_BufferDataPort0); in sdstd_card_regread()
4128 *data = sdstd_rreg(sd, SD_BufferDataPort0); in sdstd_card_regread()
4136 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_regread()
4140 if (sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg)) in sdstd_card_regread()
4147 sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_regread()
4148 sdstd_rreg(sd, SD_PresentState))); in sdstd_card_regread()
4152 sdstd_wreg16(sd, SD_IntrStatus, SFIELD(0, INTSTAT_XFER_COMPLETE, 1)); in sdstd_card_regread()
4155 if (sd->polled_mode) { in sdstd_card_regread()
4163 check_client_intr(sdioh_info_t *sd) in check_client_intr() argument
4167 raw_int = sdstd_rreg16(sd, SD_IntrStatus); in check_client_intr()
4168 cur_int = raw_int & sd->intmask; in check_client_intr()
4178 sdstd_os_lock_irqsave(sd, &flags); in check_client_intr()
4179 old_int = sdstd_rreg16(sd, SD_IntrStatusEnable); in check_client_intr()
4180 sdstd_wreg16(sd, SD_IntrStatusEnable, SFIELD(old_int, INTSTAT_CARD_INT, 0)); in check_client_intr()
4181 sdstd_os_unlock_irqrestore(sd, &flags); in check_client_intr()
4183 if (sd->client_intr_enabled && sd->use_client_ints) { in check_client_intr()
4184 sd->intrcount++; in check_client_intr()
4185 ASSERT(sd->intr_handler); in check_client_intr()
4186 ASSERT(sd->intr_handler_arg); in check_client_intr()
4187 (sd->intr_handler)(sd->intr_handler_arg); in check_client_intr()
4190 __FUNCTION__, sd->client_intr_enabled, sd->intr_handler)); in check_client_intr()
4192 sdstd_os_lock_irqsave(sd, &flags); in check_client_intr()
4193 old_int = sdstd_rreg16(sd, SD_IntrStatusEnable); in check_client_intr()
4194 sdstd_wreg16(sd, SD_IntrStatusEnable, SFIELD(old_int, INTSTAT_CARD_INT, 1)); in check_client_intr()
4195 sdstd_os_unlock_irqrestore(sd, &flags); in check_client_intr()
4198 sdstd_wreg16(sd, SD_IntrSignalEnable, 0); in check_client_intr()
4199 sdstd_wreg16(sd, SD_ErrorIntrSignalEnable, 0); in check_client_intr()
4200 sd->local_intrcount++; in check_client_intr()
4201 sd->got_hcint = TRUE; in check_client_intr()
4202 sd->last_intrstatus = cur_int; in check_client_intr()
4209 sdstd_spinbits(sdioh_info_t *sd, uint16 norm, uint16 err) in sdstd_spinbits() argument
4215 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_spinbits()
4216 err_reg = sdstd_rreg16(sd, SD_ErrorIntrStatus); in sdstd_spinbits()
4219 norm |= sd->intmask; in sdstd_spinbits()
4222 sd->last_intrstatus = int_reg & norm; in sdstd_spinbits()
4227 sdstd_card_regwrite(sdioh_info_t *sd, int func, uint32 regaddr, int regsize, uint32 data) in sdstd_card_regwrite() argument
4240 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_52, cmd_arg)) in sdstd_card_regwrite()
4244 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_card_regwrite()
4259 sd->data_xfer_count = regsize; in sdstd_card_regwrite()
4264 if ((status = sdstd_cmd_issue(sd, USE_DMA(sd), SDIOH_CMD_53, cmd_arg)) in sdstd_card_regwrite()
4268 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_card_regwrite()
4277 if (sd->polled_mode) { in sdstd_card_regwrite()
4283 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_regwrite()
4290 sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_regwrite()
4291 sdstd_rreg(sd, SD_PresentState))); in sdstd_card_regwrite()
4292 sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg); in sdstd_card_regwrite()
4298 sdstd_wreg16(sd, SD_IntrStatus, int_reg); in sdstd_card_regwrite()
4302 sdstd_wreg16(sd, SD_BufferDataPort0, (uint16) data); in sdstd_card_regwrite()
4304 sdstd_wreg(sd, SD_BufferDataPort0, data); in sdstd_card_regwrite()
4309 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_regwrite()
4313 if (sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg)) in sdstd_card_regwrite()
4319 __FUNCTION__, sdstd_rreg(sd, SD_PresentState), in sdstd_card_regwrite()
4320 int_reg, sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_regwrite()
4321 sd->r_cnt, sd->t_cnt)); in sdstd_card_regwrite()
4324 sdstd_wreg16(sd, SD_IntrStatus, SFIELD(int_reg, INTSTAT_CARD_INT, 0)); in sdstd_card_regwrite()
4331 sdstd_cmd_getrsp(sdioh_info_t *sd, uint32 *rsp_buffer, int count /* num 32 bit words */) in sdstd_cmd_getrsp() argument
4340 *rsp_buffer++ = sdstd_rreg(sd, respaddr); in sdstd_cmd_getrsp()
4770 sdstd_card_buf(sdioh_info_t *sd, int rw, int func, bool fifo, uint32 addr, int nbytes, uint32 *data) in sdstd_card_buf() argument
4792 __FUNCTION__, read ? "Rd" : "Wr", addr, nbytes, sd->r_cnt, sd->t_cnt)); in sdstd_card_buf()
4794 if (read) sd->r_cnt++; else sd->t_cnt++; in sdstd_card_buf()
4796 local_blockmode = sd->sd_blockmode; in sdstd_card_buf()
4797 local_dma = USE_DMA(sd); in sdstd_card_buf()
4801 if (!read && (func == SDIO_FUNC_2) && (sd->glom_info.count != 0)) { in sdstd_card_buf()
4804 for (ii = 0; ii < sd->glom_info.count; ii++) { in sdstd_card_buf()
4805 nbytes += sd->glom_info.nbytes[ii]; in sdstd_card_buf()
4807 ASSERT(nbytes <= sd->alloced_dma_size); in sdstd_card_buf()
4812 if (nbytes < sd->client_block_size[func]) { in sdstd_card_buf()
4814 nbytes, sd->client_block_size[func])); in sdstd_card_buf()
4819 if (!read && (func == SDIO_FUNC_2) && (sd->glom_info.count != 0)) { in sdstd_card_buf()
4821 localbuf = (uint8 *)MALLOC(sd->osh, nbytes); in sdstd_card_buf()
4823 for (i = 0; i < sd->glom_info.count; i++) { in sdstd_card_buf()
4824 bcopy(sd->glom_info.dma_buf_arr[i], in sdstd_card_buf()
4826 sd->glom_info.nbytes[i]); in sdstd_card_buf()
4827 offset += sd->glom_info.nbytes[i]; in sdstd_card_buf()
4834 blocksize = MIN(sd->client_block_size[func], nbytes); in sdstd_card_buf()
4847 if ((func == SDIO_FUNC_2) && (sd->glom_info.count != 0)) { in sdstd_card_buf()
4852 if (sd->txglom_mode == SDPCM_TXGLOM_CPY) { in sdstd_card_buf()
4854 for (i = 0; i < sd->glom_info.count; i++) { in sdstd_card_buf()
4855 bcopy(sd->glom_info.dma_buf_arr[i], in sdstd_card_buf()
4856 (uint8 *)sd->dma_buf + total_bytes, in sdstd_card_buf()
4857 sd->glom_info.nbytes[i]); in sdstd_card_buf()
4858 total_bytes += sd->glom_info.nbytes[i]; in sdstd_card_buf()
4860 sd_sync_dma(sd, read, total_bytes); in sdstd_card_buf()
4865 bcopy(data, sd->dma_buf, nbytes); in sdstd_card_buf()
4866 sd_sync_dma(sd, read, nbytes); in sdstd_card_buf()
4882 sd->data_xfer_count = nbytes; in sdstd_card_buf()
4887 if ((status = sdstd_cmd_issue(sd, local_dma, SDIOH_CMD_53, cmd_arg)) != SUCCESS) { in sdstd_card_buf()
4893 sdstd_cmd_getrsp(sd, &rsp5, 1); in sdstd_card_buf()
4938 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_buf()
4940 status = sdstd_waitbits(sd, int_bit, ERRINT_TRANSFER_ERRS, in sdstd_card_buf()
4955 /* int_reg = sdstd_rreg16(sd, SD_IntrStatus); */ in sdstd_card_buf()
4962 sdstd_rreg16(sd, SD_ErrorIntrStatus), in sdstd_card_buf()
4963 sdstd_rreg(sd, SD_PresentState))); in sdstd_card_buf()
4964 sdstd_dumpregs(sd); in sdstd_card_buf()
4965 sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg); in sdstd_card_buf()
4971 sdstd_wreg16(sd, SD_IntrStatus, int_bit); in sdstd_card_buf()
4976 *data = sdstd_rreg(sd, SD_BufferDataPort0); in sdstd_card_buf()
4978 sdstd_wreg(sd, SD_BufferDataPort0, *data); in sdstd_card_buf()
4997 *(data++) = (uint32)(sdstd_rreg8(sd, SD_BufferDataPort0)); in sdstd_card_buf()
4999 sdstd_wreg8(sd, SD_BufferDataPort0, in sdstd_card_buf()
5005 *(data++) = (uint32)sdstd_rreg16(sd, SD_BufferDataPort0); in sdstd_card_buf()
5007 sdstd_wreg16(sd, SD_BufferDataPort0, (uint16)(*(data++))); in sdstd_card_buf()
5014 tmp = (uint32)sdstd_rreg16(sd, SD_BufferDataPort0); in sdstd_card_buf()
5015 tmp |= ((uint32)(sdstd_rreg8(sd, in sdstd_card_buf()
5020 sdstd_wreg16(sd, SD_BufferDataPort0, (uint16)tmp & 0xffff); in sdstd_card_buf()
5021 sdstd_wreg8(sd, SD_BufferDataPort1, in sdstd_card_buf()
5038 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_buf()
5040 status = sdstd_waitbits(sd, int_bit, ERRINT_TRANSFER_ERRS, local_yield, &int_reg); in sdstd_card_buf()
5054 if (sdstd_check_errs(sd, SDIOH_CMD_53, cmd_arg)) { in sdstd_card_buf()
5060 int_reg = sdstd_rreg16(sd, SD_IntrStatus); in sdstd_card_buf()
5065 sdstd_rreg(sd, SD_PresentState), int_reg, in sdstd_card_buf()
5066 sdstd_rreg16(sd, SD_ErrorIntrStatus), nbytes, in sdstd_card_buf()
5067 sd->r_cnt, sd->t_cnt)); in sdstd_card_buf()
5068 sdstd_dumpregs(sd); in sdstd_card_buf()
5081 sdstd_wreg16(sd, SD_IntrStatus, int_reg); in sdstd_card_buf()
5085 sd_sync_dma(sd, read, nbytes); in sdstd_card_buf()
5086 bcopy(sd->dma_buf, data, nbytes); in sdstd_card_buf()
5092 MFREE(sd->osh, localbuf, nbytes); in sdstd_card_buf()
5098 set_client_block_size(sdioh_info_t *sd, int func, int block_size) in set_client_block_size() argument
5104 sd->client_block_size[func] = block_size; in set_client_block_size()
5108 err = sdstd_card_regwrite(sd, 0, base+SDIOD_CCCR_BLKSIZE_0, 1, block_size & 0xff); in set_client_block_size()
5110 err = sdstd_card_regwrite(sd, 0, base+SDIOD_CCCR_BLKSIZE_1, 1, in set_client_block_size()
5149 cis_fetch(sdioh_info_t *sd, int func, char *data, int len) in cis_fetch() argument
5157 offset = sd->func_cis_ptr[func] + count; in cis_fetch()
5158 if (sdstd_card_regread (sd, func, offset, 1, &foo) < 0) { in cis_fetch()
5171 sd_map_dma(sdioh_info_t * sd) in sd_map_dma() argument
5180 if ((sd->version == HOST_CONTR_VER_3) && sd_txglom) { in sd_map_dma()
5187 if ((va = DMA_ALLOC_CONSISTENT(sd->osh, dma_buf_size, SD_PAGE_BITS, &alloced, in sd_map_dma()
5188 &sd->dma_start_phys, 0x12)) == NULL) { in sd_map_dma()
5189 sd->sd_dma_mode = DMA_MODE_NONE; in sd_map_dma()
5190 sd->dma_start_buf = 0; in sd_map_dma()
5191 sd->dma_buf = (void *)0; in sd_map_dma()
5192 sd->dma_phys = 0; in sd_map_dma()
5193 sd->alloced_dma_size = 0; in sd_map_dma()
5196 sd->dma_start_buf = va; in sd_map_dma()
5197 sd->dma_buf = (void *)ROUNDUP((uintptr)va, SD_PAGE); in sd_map_dma()
5198 sd->dma_phys = ROUNDUP((sd->dma_start_phys), SD_PAGE); in sd_map_dma()
5199 sd->alloced_dma_size = alloced; in sd_map_dma()
5201 __FUNCTION__, sd->alloced_dma_size, sd->dma_buf, in sd_map_dma()
5202 (uint)PHYSADDRHI(sd->dma_phys), (uint)PHYSADDRLO(sd->dma_phys))); in sd_map_dma()
5203 sd_fill_dma_data_buf(sd, 0xA5); in sd_map_dma()
5206 if ((va = DMA_ALLOC_CONSISTENT(sd->osh, SD_PAGE, SD_PAGE_BITS, &alloced, in sd_map_dma()
5207 &sd->adma2_dscr_start_phys, 0x12)) == NULL) { in sd_map_dma()
5208 sd->sd_dma_mode = DMA_MODE_NONE; in sd_map_dma()
5209 sd->adma2_dscr_start_buf = 0; in sd_map_dma()
5210 sd->adma2_dscr_buf = (void *)0; in sd_map_dma()
5211 sd->adma2_dscr_phys = 0; in sd_map_dma()
5212 sd->alloced_adma2_dscr_size = 0; in sd_map_dma()
5216 sd->adma2_dscr_start_buf = va; in sd_map_dma()
5217 sd->adma2_dscr_buf = (void *)ROUNDUP((uintptr)va, SD_PAGE); in sd_map_dma()
5218 sd->adma2_dscr_phys = ROUNDUP((sd->adma2_dscr_start_phys), SD_PAGE); in sd_map_dma()
5219 sd->alloced_adma2_dscr_size = alloced; in sd_map_dma()
5221 __FUNCTION__, sd->alloced_adma2_dscr_size, sd->adma2_dscr_buf, in sd_map_dma()
5222 (uint)PHYSADDRHI(sd->adma2_dscr_phys), in sd_map_dma()
5223 (uint)PHYSADDRLO(sd->adma2_dscr_phys))); in sd_map_dma()
5224 sd_clear_adma_dscr_buf(sd); in sd_map_dma()
5229 sd_unmap_dma(sdioh_info_t * sd) in sd_unmap_dma() argument
5231 if (sd->dma_start_buf) { in sd_unmap_dma()
5232 DMA_FREE_CONSISTENT(sd->osh, sd->dma_start_buf, sd->alloced_dma_size, in sd_unmap_dma()
5233 sd->dma_start_phys, 0x12); in sd_unmap_dma()
5236 if (sd->adma2_dscr_start_buf) { in sd_unmap_dma()
5237 DMA_FREE_CONSISTENT(sd->osh, sd->adma2_dscr_start_buf, sd->alloced_adma2_dscr_size, in sd_unmap_dma()
5238 sd->adma2_dscr_start_phys, 0x12); in sd_unmap_dma()
5243 sd_clear_adma_dscr_buf(sdioh_info_t *sd) in sd_clear_adma_dscr_buf() argument
5245 bzero((char *)sd->adma2_dscr_buf, SD_PAGE); in sd_clear_adma_dscr_buf()
5246 sd_dump_adma_dscr(sd); in sd_clear_adma_dscr_buf()
5250 sd_fill_dma_data_buf(sdioh_info_t *sd, uint8 data) in sd_fill_dma_data_buf() argument
5252 memset((char *)sd->dma_buf, data, SD_PAGE); in sd_fill_dma_data_buf()
5256 sd_create_adma_descriptor(sdioh_info_t *sd, uint32 index, in sd_create_adma_descriptor() argument
5262 adma2_dscr_table = sd->adma2_dscr_buf; in sd_create_adma_descriptor()
5263 adma1_dscr_table = sd->adma2_dscr_buf; in sd_create_adma_descriptor()
5265 switch (sd->sd_dma_mode) { in sd_create_adma_descriptor()
5291 __FUNCTION__, sd->sd_dma_mode)); in sd_create_adma_descriptor()
5297 sd_dump_adma_dscr(sdioh_info_t *sd) in sd_dump_adma_dscr() argument
5305 ASSERT(sd->adma2_dscr_buf != NULL); in sd_dump_adma_dscr()
5307 adma2_dscr_table = sd->adma2_dscr_buf; in sd_dump_adma_dscr()
5308 adma1_dscr_table = sd->adma2_dscr_buf; in sd_dump_adma_dscr()
5310 switch (sd->sd_dma_mode) { in sd_dump_adma_dscr()
5313 SD_PAGE, sd->adma2_dscr_buf, in sd_dump_adma_dscr()
5314 (uint)PHYSADDRHI(sd->adma2_dscr_phys), in sd_dump_adma_dscr()
5315 (uint)PHYSADDRLO(sd->adma2_dscr_phys))); in sd_dump_adma_dscr()
5352 SD_PAGE, sd->adma2_dscr_buf, in sd_dump_adma_dscr()
5353 (uint)PHYSADDRHI(sd->adma2_dscr_phys), in sd_dump_adma_dscr()
5354 (uint)PHYSADDRLO(sd->adma2_dscr_phys))); in sd_dump_adma_dscr()
5395 sdstd_dumpregs(sdioh_info_t *sd) in sdstd_dumpregs() argument
5398 sdstd_rreg16(sd, SD_IntrStatus), in sdstd_dumpregs()
5399 sdstd_rreg16(sd, SD_ErrorIntrStatus))); in sdstd_dumpregs()
5401 sdstd_rreg16(sd, SD_IntrStatusEnable), in sdstd_dumpregs()
5402 sdstd_rreg16(sd, SD_ErrorIntrStatusEnable))); in sdstd_dumpregs()
5404 sdstd_rreg16(sd, SD_IntrSignalEnable), in sdstd_dumpregs()
5405 sdstd_rreg16(sd, SD_ErrorIntrSignalEnable))); in sdstd_dumpregs()