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()
449 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx8_sata_enable() local
450 struct device *dev = &imxpriv->ahci_pdev->dev; in imx8_sata_enable()
453 ret = clk_prepare_enable(imxpriv->phy_pclk0); in imx8_sata_enable()
458 ret = clk_prepare_enable(imxpriv->phy_pclk1); in imx8_sata_enable()
463 ret = clk_prepare_enable(imxpriv->epcs_tx_clk); in imx8_sata_enable()
468 ret = clk_prepare_enable(imxpriv->epcs_rx_clk); in imx8_sata_enable()
473 ret = clk_prepare_enable(imxpriv->phy_apbclk); in imx8_sata_enable()
479 regmap_read(imxpriv->gpr, IMX8QM_CSR_PCIEA_OFFSET + in imx8_sata_enable()
483 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
490 regmap_read(imxpriv->gpr, IMX8QM_CSR_PCIEB_OFFSET + in imx8_sata_enable()
494 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
503 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
512 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
516 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
522 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
531 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
535 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
539 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
552 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
564 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
569 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
575 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
580 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
584 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
590 regmap_update_bits(imxpriv->gpr, in imx8_sata_enable()
598 regmap_read(imxpriv->gpr, reg, &val); in imx8_sata_enable()
609 writeb(imxpriv->imped_ratio, imxpriv->phy_base + in imx8_sata_enable()
611 writeb(imxpriv->imped_ratio, imxpriv->phy_base + in imx8_sata_enable()
613 reg = readb(imxpriv->phy_base + in imx8_sata_enable()
615 if (unlikely(reg != imxpriv->imped_ratio)) in imx8_sata_enable()
617 reg = readb(imxpriv->phy_base + in imx8_sata_enable()
619 if (unlikely(reg != imxpriv->imped_ratio)) in imx8_sata_enable()
627 clk_disable_unprepare(imxpriv->phy_apbclk); in imx8_sata_enable()
628 clk_disable_unprepare(imxpriv->phy_pclk1); in imx8_sata_enable()
629 clk_disable_unprepare(imxpriv->phy_pclk0); in imx8_sata_enable()
633 clk_disable_unprepare(imxpriv->phy_apbclk); in imx8_sata_enable()
635 clk_disable_unprepare(imxpriv->epcs_rx_clk); in imx8_sata_enable()
637 clk_disable_unprepare(imxpriv->epcs_tx_clk); in imx8_sata_enable()
639 clk_disable_unprepare(imxpriv->phy_pclk1); in imx8_sata_enable()
641 clk_disable_unprepare(imxpriv->phy_pclk0); in imx8_sata_enable()
648 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx_sata_enable() local
649 struct device *dev = &imxpriv->ahci_pdev->dev; in imx_sata_enable()
652 if (imxpriv->no_device) in imx_sata_enable()
659 ret = clk_prepare_enable(imxpriv->sata_ref_clk); in imx_sata_enable()
663 if (imxpriv->type == AHCI_IMX6Q || imxpriv->type == AHCI_IMX6QP) { in imx_sata_enable()
670 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_enable()
681 imxpriv->phy_params); in imx_sata_enable()
682 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_enable()
693 } else if (imxpriv->type == AHCI_IMX8QM) { in imx_sata_enable()
702 clk_disable_unprepare(imxpriv->sata_ref_clk); in imx_sata_enable()
711 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in imx_sata_disable() local
713 if (imxpriv->no_device) in imx_sata_disable()
716 switch (imxpriv->type) { in imx_sata_disable()
718 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR5, in imx_sata_disable()
721 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_disable()
727 regmap_update_bits(imxpriv->gpr, IOMUXC_GPR13, in imx_sata_disable()
733 clk_disable_unprepare(imxpriv->epcs_rx_clk); in imx_sata_disable()
734 clk_disable_unprepare(imxpriv->epcs_tx_clk); in imx_sata_disable()
741 clk_disable_unprepare(imxpriv->sata_ref_clk); in imx_sata_disable()
753 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_error_handler() local
757 if (!(imxpriv->first_time) || ahci_imx_hotplug) in ahci_imx_error_handler()
760 imxpriv->first_time = false; in ahci_imx_error_handler()
772 imxpriv->no_device = true; in ahci_imx_error_handler()
784 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_softreset() local
787 if (imxpriv->type == AHCI_IMX53) in ahci_imx_softreset()
981 static int imx8_sata_probe(struct device *dev, struct imx_ahci_priv *imxpriv) in imx8_sata_probe() argument
984 struct platform_device *pdev = imxpriv->ahci_pdev; in imx8_sata_probe()
987 if (of_property_read_u32(np, "fsl,phy-imp", &imxpriv->imped_ratio)) in imx8_sata_probe()
988 imxpriv->imped_ratio = IMX8QM_SATA_PHY_IMPED_RATIO_85OHM; in imx8_sata_probe()
991 imxpriv->phy_base = devm_ioremap(dev, phy_res->start, in imx8_sata_probe()
993 if (!imxpriv->phy_base) { in imx8_sata_probe()
1001 imxpriv->gpr = in imx8_sata_probe()
1003 if (IS_ERR(imxpriv->gpr)) { in imx8_sata_probe()
1005 return PTR_ERR(imxpriv->gpr); in imx8_sata_probe()
1008 imxpriv->epcs_tx_clk = devm_clk_get(dev, "epcs_tx"); in imx8_sata_probe()
1009 if (IS_ERR(imxpriv->epcs_tx_clk)) { in imx8_sata_probe()
1011 return PTR_ERR(imxpriv->epcs_tx_clk); in imx8_sata_probe()
1013 imxpriv->epcs_rx_clk = devm_clk_get(dev, "epcs_rx"); in imx8_sata_probe()
1014 if (IS_ERR(imxpriv->epcs_rx_clk)) { in imx8_sata_probe()
1016 return PTR_ERR(imxpriv->epcs_rx_clk); in imx8_sata_probe()
1018 imxpriv->phy_pclk0 = devm_clk_get(dev, "phy_pclk0"); in imx8_sata_probe()
1019 if (IS_ERR(imxpriv->phy_pclk0)) { in imx8_sata_probe()
1021 return PTR_ERR(imxpriv->phy_pclk0); in imx8_sata_probe()
1023 imxpriv->phy_pclk1 = devm_clk_get(dev, "phy_pclk1"); in imx8_sata_probe()
1024 if (IS_ERR(imxpriv->phy_pclk1)) { in imx8_sata_probe()
1026 return PTR_ERR(imxpriv->phy_pclk1); in imx8_sata_probe()
1028 imxpriv->phy_apbclk = devm_clk_get(dev, "phy_apbclk"); in imx8_sata_probe()
1029 if (IS_ERR(imxpriv->phy_apbclk)) { in imx8_sata_probe()
1031 return PTR_ERR(imxpriv->phy_apbclk); in imx8_sata_probe()
1035 imxpriv->clkreq_gpiod = devm_gpiod_get_optional(dev, "clkreq", in imx8_sata_probe()
1037 if (IS_ERR(imxpriv->clkreq_gpiod)) in imx8_sata_probe()
1038 return PTR_ERR(imxpriv->clkreq_gpiod); in imx8_sata_probe()
1039 if (imxpriv->clkreq_gpiod) in imx8_sata_probe()
1040 gpiod_set_consumer_name(imxpriv->clkreq_gpiod, "SATA CLKREQ"); in imx8_sata_probe()
1050 struct imx_ahci_priv *imxpriv; in imx_ahci_probe() local
1058 imxpriv = devm_kzalloc(dev, sizeof(*imxpriv), GFP_KERNEL); in imx_ahci_probe()
1059 if (!imxpriv) in imx_ahci_probe()
1062 imxpriv->ahci_pdev = pdev; in imx_ahci_probe()
1063 imxpriv->no_device = false; in imx_ahci_probe()
1064 imxpriv->first_time = true; in imx_ahci_probe()
1065 imxpriv->type = (enum ahci_imx_type)of_id->data; in imx_ahci_probe()
1067 imxpriv->sata_clk = devm_clk_get(dev, "sata"); in imx_ahci_probe()
1068 if (IS_ERR(imxpriv->sata_clk)) { in imx_ahci_probe()
1070 return PTR_ERR(imxpriv->sata_clk); in imx_ahci_probe()
1073 imxpriv->sata_ref_clk = devm_clk_get(dev, "sata_ref"); in imx_ahci_probe()
1074 if (IS_ERR(imxpriv->sata_ref_clk)) { in imx_ahci_probe()
1076 return PTR_ERR(imxpriv->sata_ref_clk); in imx_ahci_probe()
1079 imxpriv->ahb_clk = devm_clk_get(dev, "ahb"); in imx_ahci_probe()
1080 if (IS_ERR(imxpriv->ahb_clk)) { in imx_ahci_probe()
1082 return PTR_ERR(imxpriv->ahb_clk); in imx_ahci_probe()
1085 if (imxpriv->type == AHCI_IMX6Q || imxpriv->type == AHCI_IMX6QP) { in imx_ahci_probe()
1088 imxpriv->gpr = syscon_regmap_lookup_by_compatible( in imx_ahci_probe()
1090 if (IS_ERR(imxpriv->gpr)) { in imx_ahci_probe()
1093 return PTR_ERR(imxpriv->gpr); in imx_ahci_probe()
1099 imxpriv->phy_params = in imx_ahci_probe()
1104 } else if (imxpriv->type == AHCI_IMX8QM) { in imx_ahci_probe()
1105 ret = imx8_sata_probe(dev, imxpriv); in imx_ahci_probe()
1114 hpriv->plat_data = imxpriv; in imx_ahci_probe()
1116 ret = clk_prepare_enable(imxpriv->sata_clk); in imx_ahci_probe()
1120 if (imxpriv->type == AHCI_IMX53 && in imx_ahci_probe()
1161 reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000; in imx_ahci_probe()
1174 clk_disable_unprepare(imxpriv->sata_clk); in imx_ahci_probe()
1181 struct imx_ahci_priv *imxpriv = hpriv->plat_data; in ahci_imx_host_stop() local
1184 clk_disable_unprepare(imxpriv->sata_clk); in ahci_imx_host_stop()