Lines Matching refs:hpriv

112 	int (*init)(struct ahci_host_priv *hpriv);
113 int (*reinit)(struct ahci_host_priv *hpriv);
114 void (*clear)(struct ahci_host_priv *hpriv);
125 static int ahci_bt1_init(struct ahci_host_priv *hpriv)
127 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
131 if (!ahci_platform_find_clk(hpriv, "pclk") ||
132 !ahci_platform_find_clk(hpriv, "aclk") ||
133 !ahci_platform_find_clk(hpriv, "ref")) {
143 ret = ahci_platform_assert_rsts(hpriv);
149 ret = ahci_platform_deassert_rsts(hpriv);
161 struct ahci_host_priv *hpriv;
172 hpriv = ahci_platform_get_resources(pdev, dpriv->pdata->pflags);
173 if (IS_ERR(hpriv))
174 return hpriv;
176 hpriv->flags |= dpriv->pdata->hflags;
177 hpriv->plat_data = (void *)dpriv;
179 return hpriv;
182 static void ahci_dwc_check_cap(struct ahci_host_priv *hpriv)
184 unsigned long port_map = hpriv->saved_port_map | hpriv->mask_port_map;
185 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
191 param = readl(hpriv->mmio + AHCI_DWC_HOST_GPARAM2R);
197 if (!dev_mp && hpriv->saved_cap & HOST_CAP_MPS) {
199 hpriv->saved_cap &= ~HOST_CAP_MPS;
209 if (!dev_mp && hpriv->saved_port_cap[i] & PORT_CMD_MPSP) {
211 hpriv->saved_port_cap[i] &= ~PORT_CMD_MPSP;
214 if (!dev_cp && hpriv->saved_port_cap[i] & PORT_CMD_CPD) {
216 hpriv->saved_port_cap[i] &= ~PORT_CMD_CPD;
219 if (!fbs_sup && hpriv->saved_port_cap[i] & PORT_CMD_FBSCP) {
221 hpriv->saved_port_cap[i] &= ~PORT_CMD_FBSCP;
226 static void ahci_dwc_init_timer(struct ahci_host_priv *hpriv)
228 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
234 cap = readl(hpriv->mmio + HOST_CAP);
235 cap2 = readl(hpriv->mmio + HOST_CAP2);
243 aclk = ahci_platform_find_clk(hpriv, "aclk");
248 dpriv->timv = readl(hpriv->mmio + AHCI_DWC_HOST_TIMER1MS);
257 writel(dpriv->timv, hpriv->mmio + AHCI_DWC_HOST_TIMER1MS);
260 static int ahci_dwc_init_dmacr(struct ahci_host_priv *hpriv)
262 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
283 port_mmio = __ahci_port_base(hpriv, port);
305 static int ahci_dwc_init_host(struct ahci_host_priv *hpriv)
307 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
310 rc = ahci_platform_enable_resources(hpriv);
315 rc = dpriv->pdata->init(hpriv);
320 ahci_dwc_check_cap(hpriv);
322 ahci_dwc_init_timer(hpriv);
324 rc = ahci_dwc_init_dmacr(hpriv);
332 dpriv->pdata->clear(hpriv);
335 ahci_platform_disable_resources(hpriv);
340 static int ahci_dwc_reinit_host(struct ahci_host_priv *hpriv)
342 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
343 unsigned long port_map = hpriv->port_map;
347 rc = ahci_platform_enable_resources(hpriv);
352 rc = dpriv->pdata->reinit(hpriv);
357 writel(dpriv->timv, hpriv->mmio + AHCI_DWC_HOST_TIMER1MS);
360 port_mmio = __ahci_port_base(hpriv, i);
367 ahci_platform_disable_resources(hpriv);
372 static void ahci_dwc_clear_host(struct ahci_host_priv *hpriv)
374 struct ahci_dwc_host_priv *dpriv = hpriv->plat_data;
377 dpriv->pdata->clear(hpriv);
379 ahci_platform_disable_resources(hpriv);
384 struct ahci_host_priv *hpriv = host->private_data;
386 ahci_dwc_clear_host(hpriv);
407 struct ahci_host_priv *hpriv;
410 hpriv = ahci_dwc_get_resources(pdev);
411 if (IS_ERR(hpriv))
412 return PTR_ERR(hpriv);
414 rc = ahci_dwc_init_host(hpriv);
418 rc = ahci_platform_init_host(pdev, hpriv, &ahci_dwc_port_info,
426 ahci_dwc_clear_host(hpriv);
434 struct ahci_host_priv *hpriv = host->private_data;
441 ahci_dwc_clear_host(hpriv);
449 struct ahci_host_priv *hpriv = host->private_data;
452 rc = ahci_dwc_reinit_host(hpriv);