return ret;
}
+
+/**
+ * ufs_tegra_cfg_vendor_registers
+ * @hba: host controller instance
+ */
+static void ufs_tegra_cfg_vendor_registers(struct ufs_hba *hba)
+{
+ ufshcd_writel(hba, UFS_VNDR_HCLKDIV_1US_TICK, REG_UFS_VNDR_HCLKDIV);
+}
+
+
/**
* ufs_tegra_init - bind phy with controller
* @hba: host controller instance
struct device *dev = hba->dev;
#endif
int err = 0;
+
+ ufs_tegra_cfg_vendor_registers(hba);
#if UFS_TEGRA_ENABLE_MPHY
ufs_tegra->mphy_l0_base = devm_ioremap(dev,
NV_ADDRESS_MAP_MPHY_L0_BASE, MPHY_ADDR_RANGE);
static void ufs_tegra_exit(struct ufs_hba *hba)
{
-
}
/**
#define MPHY_TX_APB_TX_VENDOR0_0 0x100
#define MPHY_ADDR_RANGE 400
+
+/* vendor specific pre-defined parameters */
+
+/*
+ * HCLKFrequency in MHz.
+ * HCLKDIV is used to generate 1usec tick signal used by Unipro.
+ */
+#define UFS_VNDR_HCLKDIV_1US_TICK 0x33
+
+
+/*UFS host controller vendor specific registers */
+enum {
+ REG_UFS_VNDR_HCLKDIV = 0xFC,
+};
+
+
struct ufs_tegra_host {
struct ufs_hba *hba;
bool is_lane_clks_enabled;