Lines Matching refs:imxpriv

227 	struct imx_ahci_priv *imxpriv = hpriv->plat_data;  in imx_sata_phy_reset()  local
233 if (imxpriv->type == AHCI_IMX6QP) { in imx_sata_phy_reset()
235 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR5, in imx_sata_phy_reset()
238 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR5, in imx_sata_phy_reset()
241 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR5, in imx_sata_phy_reset()
454 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx8_sata_enable() local
455 struct device *dev = &imxpriv->ahci_pdev->dev; in imx8_sata_enable()
458 ret = clk_prepare_enable(imxpriv->phy_pclk0); in imx8_sata_enable()
463 ret = clk_prepare_enable(imxpriv->phy_pclk1); in imx8_sata_enable()
468 ret = clk_prepare_enable(imxpriv->epcs_tx_clk); in imx8_sata_enable()
473 ret = clk_prepare_enable(imxpriv->epcs_rx_clk); in imx8_sata_enable()
478 ret = clk_prepare_enable(imxpriv->phy_apbclk); in imx8_sata_enable()
484 regmap_read(imxpriv->gpr, IMX8QM_CSR_PCIEA_OFFSET + in imx8_sata_enable()
488 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
495 regmap_read(imxpriv->gpr, IMX8QM_CSR_PCIEB_OFFSET + in imx8_sata_enable()
499 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
508 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
517 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
521 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
527 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
536 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
540 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
544 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
557 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
569 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
574 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
580 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
585 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
589 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
595 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
603 regmap_read(imxpriv->gpr, reg, &val); in imx8_sata_enable()
614 writeb(imxpriv->imped_ratio, imxpriv->phy_base + in imx8_sata_enable()
616 writeb(imxpriv->imped_ratio, imxpriv->phy_base + in imx8_sata_enable()
618 reg = readb(imxpriv->phy_base + in imx8_sata_enable()
620 if (unlikely(reg != imxpriv->imped_ratio)) in imx8_sata_enable()
622 reg = readb(imxpriv->phy_base + in imx8_sata_enable()
624 if (unlikely(reg != imxpriv->imped_ratio)) in imx8_sata_enable()
632 clk_disable_unprepare(imxpriv->phy_apbclk); in imx8_sata_enable()
633 clk_disable_unprepare(imxpriv->phy_pclk1); in imx8_sata_enable()
634 clk_disable_unprepare(imxpriv->phy_pclk0); in imx8_sata_enable()
638 clk_disable_unprepare(imxpriv->phy_apbclk); in imx8_sata_enable()
640 clk_disable_unprepare(imxpriv->epcs_rx_clk); in imx8_sata_enable()
642 clk_disable_unprepare(imxpriv->epcs_tx_clk); in imx8_sata_enable()
644 clk_disable_unprepare(imxpriv->phy_pclk1); in imx8_sata_enable()
646 clk_disable_unprepare(imxpriv->phy_pclk0); in imx8_sata_enable()
653 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx_sata_enable() local
654 struct device *dev = &imxpriv->ahci_pdev->dev; in imx_sata_enable()
657 if (imxpriv->no_device) in imx_sata_enable()
664 ret = clk_prepare_enable(imxpriv->sata_ref_clk); in imx_sata_enable()
668 if (imxpriv->type == AHCI_IMX6Q || imxpriv->type == AHCI_IMX6QP) { in imx_sata_enable()
675 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_enable()
686 imxpriv->phy_params); in imx_sata_enable()
687 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_enable()
698 } else if (imxpriv->type == AHCI_IMX8QM) { in imx_sata_enable()
707 clk_disable_unprepare(imxpriv->sata_ref_clk); in imx_sata_enable()
716 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx_sata_disable() local
718 if (imxpriv->no_device) in imx_sata_disable()
721 switch (imxpriv->type) { in imx_sata_disable()
723 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR5, in imx_sata_disable()
726 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_disable()
732 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_disable()
738 clk_disable_unprepare(imxpriv->epcs_rx_clk); in imx_sata_disable()
739 clk_disable_unprepare(imxpriv->epcs_tx_clk); in imx_sata_disable()
746 clk_disable_unprepare(imxpriv->sata_ref_clk); in imx_sata_disable()
758 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_error_handler() local
762 if (!(imxpriv->first_time) || ahci_imx_hotplug) in ahci_imx_error_handler()
765 imxpriv->first_time = false; in ahci_imx_error_handler()
777 imxpriv->no_device = true; in ahci_imx_error_handler()
789 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_softreset() local
792 if (imxpriv->type == AHCI_IMX53) in ahci_imx_softreset()
986 static int imx8_sata_probe(struct device *dev, struct imx_ahci_priv *imxpriv) in imx8_sata_probe() argument
989 struct platform_device *pdev = imxpriv->ahci_pdev; in imx8_sata_probe()
992 if (of_property_read_u32(np, "fsl,phy-imp", &imxpriv->imped_ratio)) in imx8_sata_probe()
993 imxpriv->imped_ratio = IMX8QM_SATA_PHY_IMPED_RATIO_85OHM; in imx8_sata_probe()
996 imxpriv->phy_base = devm_ioremap(dev, phy_res->start, in imx8_sata_probe()
998 if (!imxpriv->phy_base) { in imx8_sata_probe()
1006 imxpriv->gpr = in imx8_sata_probe()
1008 if (IS_ERR(imxpriv->gpr)) { in imx8_sata_probe()
1010 return PTR_ERR(imxpriv->gpr); in imx8_sata_probe()
1013 imxpriv->epcs_tx_clk = devm_clk_get(dev, "epcs_tx"); in imx8_sata_probe()
1014 if (IS_ERR(imxpriv->epcs_tx_clk)) { in imx8_sata_probe()
1016 return PTR_ERR(imxpriv->epcs_tx_clk); in imx8_sata_probe()
1018 imxpriv->epcs_rx_clk = devm_clk_get(dev, "epcs_rx"); in imx8_sata_probe()
1019 if (IS_ERR(imxpriv->epcs_rx_clk)) { in imx8_sata_probe()
1021 return PTR_ERR(imxpriv->epcs_rx_clk); in imx8_sata_probe()
1023 imxpriv->phy_pclk0 = devm_clk_get(dev, "phy_pclk0"); in imx8_sata_probe()
1024 if (IS_ERR(imxpriv->phy_pclk0)) { in imx8_sata_probe()
1026 return PTR_ERR(imxpriv->phy_pclk0); in imx8_sata_probe()
1028 imxpriv->phy_pclk1 = devm_clk_get(dev, "phy_pclk1"); in imx8_sata_probe()
1029 if (IS_ERR(imxpriv->phy_pclk1)) { in imx8_sata_probe()
1031 return PTR_ERR(imxpriv->phy_pclk1); in imx8_sata_probe()
1033 imxpriv->phy_apbclk = devm_clk_get(dev, "phy_apbclk"); in imx8_sata_probe()
1034 if (IS_ERR(imxpriv->phy_apbclk)) { in imx8_sata_probe()
1036 return PTR_ERR(imxpriv->phy_apbclk); in imx8_sata_probe()
1040 imxpriv->clkreq_gpiod = devm_gpiod_get_optional(dev, "clkreq", in imx8_sata_probe()
1042 if (IS_ERR(imxpriv->clkreq_gpiod)) in imx8_sata_probe()
1043 return PTR_ERR(imxpriv->clkreq_gpiod); in imx8_sata_probe()
1044 if (imxpriv->clkreq_gpiod) in imx8_sata_probe()
1045 gpiod_set_consumer_name(imxpriv->clkreq_gpiod, "SATA CLKREQ"); in imx8_sata_probe()
1055 struct imx_ahci_priv *imxpriv; in imx_ahci_probe() local
1063 imxpriv = devm_kzalloc(dev, sizeof(*imxpriv), GFP_KERNEL); in imx_ahci_probe()
1064 if (!imxpriv) in imx_ahci_probe()
1067 imxpriv->ahci_pdev = pdev; in imx_ahci_probe()
1068 imxpriv->no_device = false; in imx_ahci_probe()
1069 imxpriv->first_time = true; in imx_ahci_probe()
1070 imxpriv->type = (unsigned long)of_id->data; in imx_ahci_probe()
1072 imxpriv->sata_clk = devm_clk_get(dev, "sata"); in imx_ahci_probe()
1073 if (IS_ERR(imxpriv->sata_clk)) { in imx_ahci_probe()
1075 return PTR_ERR(imxpriv->sata_clk); in imx_ahci_probe()
1078 imxpriv->sata_ref_clk = devm_clk_get(dev, "sata_ref"); in imx_ahci_probe()
1079 if (IS_ERR(imxpriv->sata_ref_clk)) { in imx_ahci_probe()
1081 return PTR_ERR(imxpriv->sata_ref_clk); in imx_ahci_probe()
1084 imxpriv->ahb_clk = devm_clk_get(dev, "ahb"); in imx_ahci_probe()
1085 if (IS_ERR(imxpriv->ahb_clk)) { in imx_ahci_probe()
1087 return PTR_ERR(imxpriv->ahb_clk); in imx_ahci_probe()
1090 if (imxpriv->type == AHCI_IMX6Q || imxpriv->type == AHCI_IMX6QP) { in imx_ahci_probe()
1093 imxpriv->gpr = syscon_regmap_lookup_by_compatible( in imx_ahci_probe()
1095 if (IS_ERR(imxpriv->gpr)) { in imx_ahci_probe()
1098 return PTR_ERR(imxpriv->gpr); in imx_ahci_probe()
1104 imxpriv->phy_params = in imx_ahci_probe()
1109 } else if (imxpriv->type == AHCI_IMX8QM) { in imx_ahci_probe()
1110 ret = imx8_sata_probe(dev, imxpriv); in imx_ahci_probe()
1119 hpriv->plat_data = imxpriv; in imx_ahci_probe()
1121 ret = clk_prepare_enable(imxpriv->sata_clk); in imx_ahci_probe()
1125 if (imxpriv->type == AHCI_IMX53 && in imx_ahci_probe()
1166 reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000; in imx_ahci_probe()
1179 clk_disable_unprepare(imxpriv->sata_clk); in imx_ahci_probe()
1186 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_host_stop() local
1189 clk_disable_unprepare(imxpriv->sata_clk); in ahci_imx_host_stop()