File tree Expand file tree Collapse file tree 2 files changed +8
-0
lines changed Expand file tree Collapse file tree 2 files changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -1617,6 +1617,7 @@ static void dw_mci_hw_reset(struct mmc_host *mmc)
1617
1617
{
1618
1618
struct dw_mci_slot * slot = mmc_priv (mmc );
1619
1619
struct dw_mci * host = slot -> host ;
1620
+ const struct dw_mci_drv_data * drv_data = host -> drv_data ;
1620
1621
int reset ;
1621
1622
1622
1623
if (host -> use_dma == TRANS_MODE_IDMAC )
@@ -1626,6 +1627,11 @@ static void dw_mci_hw_reset(struct mmc_host *mmc)
1626
1627
SDMMC_CTRL_FIFO_RESET ))
1627
1628
return ;
1628
1629
1630
+ if (drv_data && drv_data -> hw_reset ) {
1631
+ drv_data -> hw_reset (host );
1632
+ return ;
1633
+ }
1634
+
1629
1635
/*
1630
1636
* According to eMMC spec, card reset procedure:
1631
1637
* tRstW >= 1us: RST_n pulse width
Original file line number Diff line number Diff line change @@ -566,6 +566,7 @@ struct dw_mci_slot {
566
566
* @execute_tuning: implementation specific tuning procedure.
567
567
* @set_data_timeout: implementation specific timeout.
568
568
* @get_drto_clks: implementation specific cycle count for data read timeout.
569
+ * @hw_reset: implementation specific HW reset.
569
570
*
570
571
* Provide controller implementation specific extensions. The usage of this
571
572
* data structure is fully optional and usage of each member in this structure
@@ -586,5 +587,6 @@ struct dw_mci_drv_data {
586
587
void (* set_data_timeout )(struct dw_mci * host ,
587
588
unsigned int timeout_ns );
588
589
u32 (* get_drto_clks )(struct dw_mci * host );
590
+ void (* hw_reset )(struct dw_mci * host );
589
591
};
590
592
#endif /* _DW_MMC_H_ */
You can’t perform that action at this time.
0 commit comments