|
34 | 34 | * Exynos's Vendor specific registers for UFSHCI
|
35 | 35 | */
|
36 | 36 | #define HCI_TXPRDT_ENTRY_SIZE 0x00
|
37 |
| -#define PRDT_PREFECT_EN BIT(31) |
| 37 | +#define PRDT_PREFETCH_EN BIT(31) |
38 | 38 | #define HCI_RXPRDT_ENTRY_SIZE 0x04
|
39 | 39 | #define HCI_1US_TO_CNT_VAL 0x0C
|
40 | 40 | #define CNT_VAL_1US_MASK 0x3FF
|
@@ -1098,12 +1098,17 @@ static int exynos_ufs_post_link(struct ufs_hba *hba)
|
1098 | 1098 | struct exynos_ufs *ufs = ufshcd_get_variant(hba);
|
1099 | 1099 | struct phy *generic_phy = ufs->phy;
|
1100 | 1100 | struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
|
| 1101 | + u32 val = ilog2(DATA_UNIT_SIZE); |
1101 | 1102 |
|
1102 | 1103 | exynos_ufs_establish_connt(ufs);
|
1103 | 1104 | exynos_ufs_fit_aggr_timeout(ufs);
|
1104 | 1105 |
|
1105 | 1106 | hci_writel(ufs, 0xa, HCI_DATA_REORDER);
|
1106 |
| - hci_writel(ufs, ilog2(DATA_UNIT_SIZE), HCI_TXPRDT_ENTRY_SIZE); |
| 1107 | + |
| 1108 | + if (hba->caps & UFSHCD_CAP_CRYPTO) |
| 1109 | + val |= PRDT_PREFETCH_EN; |
| 1110 | + hci_writel(ufs, val, HCI_TXPRDT_ENTRY_SIZE); |
| 1111 | + |
1107 | 1112 | hci_writel(ufs, ilog2(DATA_UNIT_SIZE), HCI_RXPRDT_ENTRY_SIZE);
|
1108 | 1113 | hci_writel(ufs, (1 << hba->nutrs) - 1, HCI_UTRL_NEXUS_TYPE);
|
1109 | 1114 | hci_writel(ufs, (1 << hba->nutmrs) - 1, HCI_UTMRL_NEXUS_TYPE);
|
|
0 commit comments