| .. | .. |
|---|
| 23 | 23 | struct clk *drive_clk; |
|---|
| 24 | 24 | }; |
|---|
| 25 | 25 | |
|---|
| 26 | +static unsigned long dw_mci_hi3798cv200_caps[] = { |
|---|
| 27 | + MMC_CAP_CMD23, |
|---|
| 28 | + MMC_CAP_CMD23, |
|---|
| 29 | + MMC_CAP_CMD23 |
|---|
| 30 | +}; |
|---|
| 31 | + |
|---|
| 26 | 32 | static void dw_mci_hi3798cv200_set_ios(struct dw_mci *host, struct mmc_ios *ios) |
|---|
| 27 | 33 | { |
|---|
| 28 | 34 | struct hi3798cv200_priv *priv = host->priv; |
|---|
| .. | .. |
|---|
| 60 | 66 | static int dw_mci_hi3798cv200_execute_tuning(struct dw_mci_slot *slot, |
|---|
| 61 | 67 | u32 opcode) |
|---|
| 62 | 68 | { |
|---|
| 63 | | - int degrees[] = { 0, 45, 90, 135, 180, 225, 270, 315 }; |
|---|
| 69 | + static const int degrees[] = { 0, 45, 90, 135, 180, 225, 270, 315 }; |
|---|
| 64 | 70 | struct dw_mci *host = slot->host; |
|---|
| 65 | 71 | struct hi3798cv200_priv *priv = host->priv; |
|---|
| 66 | 72 | int raise_point = -1, fall_point = -1; |
|---|
| .. | .. |
|---|
| 160 | 166 | } |
|---|
| 161 | 167 | |
|---|
| 162 | 168 | static const struct dw_mci_drv_data hi3798cv200_data = { |
|---|
| 169 | + .caps = dw_mci_hi3798cv200_caps, |
|---|
| 170 | + .num_caps = ARRAY_SIZE(dw_mci_hi3798cv200_caps), |
|---|
| 163 | 171 | .init = dw_mci_hi3798cv200_init, |
|---|
| 164 | 172 | .set_ios = dw_mci_hi3798cv200_set_ios, |
|---|
| 165 | 173 | .execute_tuning = dw_mci_hi3798cv200_execute_tuning, |
|---|
| .. | .. |
|---|
| 192 | 200 | .remove = dw_mci_hi3798cv200_remove, |
|---|
| 193 | 201 | .driver = { |
|---|
| 194 | 202 | .name = "dwmmc_hi3798cv200", |
|---|
| 203 | + .probe_type = PROBE_PREFER_ASYNCHRONOUS, |
|---|
| 195 | 204 | .of_match_table = dw_mci_hi3798cv200_match, |
|---|
| 196 | 205 | }, |
|---|
| 197 | 206 | }; |
|---|