Commit 26a12002 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'imx-drivers-6.2' of...

Merge tag 'imx-drivers-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/drivers

i.MX drivers change for 6.2:

- Improve imx8m-blk-ctrl driver to allow deferred probe in case that
  'bus' genpd is not yet ready.
- Add missing USB_1_PHY PD for i.MX scu-pd firmware driver.
- Add GENPD_FLAG_ACTIVE_WAKEUP flag for i.MX8MM/N in GPCv2 driver, so
  that the power domain remains on if USB remote wakeup is enabled.

* tag 'imx-drivers-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  soc: imx: gpcv2: add GENPD_FLAG_ACTIVE_WAKEUP flag for usb of imx8mm/n
  firmware: imx: scu-pd: add missed USB_1_PHY pd
  soc: imx: imx8m-blk-ctrl: Defer probe if 'bus' genpd is not yet ready

Link: https://lore.kernel.org/r/20221119125733.32719-1-shawnguo@kernel.orgSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents cb667ad7 98572487
...@@ -108,6 +108,7 @@ static const struct imx_sc_pd_range imx8qxp_scu_pd_ranges[] = { ...@@ -108,6 +108,7 @@ static const struct imx_sc_pd_range imx8qxp_scu_pd_ranges[] = {
/* CONN SS */ /* CONN SS */
{ "usb", IMX_SC_R_USB_0, 2, true, 0 }, { "usb", IMX_SC_R_USB_0, 2, true, 0 },
{ "usb0phy", IMX_SC_R_USB_0_PHY, 1, false, 0 }, { "usb0phy", IMX_SC_R_USB_0_PHY, 1, false, 0 },
{ "usb1phy", IMX_SC_R_USB_1_PHY, 1, false, 0},
{ "usb2", IMX_SC_R_USB_2, 1, false, 0 }, { "usb2", IMX_SC_R_USB_2, 1, false, 0 },
{ "usb2phy", IMX_SC_R_USB_2_PHY, 1, false, 0 }, { "usb2phy", IMX_SC_R_USB_2_PHY, 1, false, 0 },
{ "sdhc", IMX_SC_R_SDHC_0, 3, true, 0 }, { "sdhc", IMX_SC_R_SDHC_0, 3, true, 0 },
......
...@@ -755,6 +755,7 @@ static const struct imx_pgc_domain imx8mm_pgc_domains[] = { ...@@ -755,6 +755,7 @@ static const struct imx_pgc_domain imx8mm_pgc_domains[] = {
[IMX8MM_POWER_DOMAIN_OTG1] = { [IMX8MM_POWER_DOMAIN_OTG1] = {
.genpd = { .genpd = {
.name = "usb-otg1", .name = "usb-otg1",
.flags = GENPD_FLAG_ACTIVE_WAKEUP,
}, },
.bits = { .bits = {
.pxx = IMX8MM_OTG1_SW_Pxx_REQ, .pxx = IMX8MM_OTG1_SW_Pxx_REQ,
...@@ -766,6 +767,7 @@ static const struct imx_pgc_domain imx8mm_pgc_domains[] = { ...@@ -766,6 +767,7 @@ static const struct imx_pgc_domain imx8mm_pgc_domains[] = {
[IMX8MM_POWER_DOMAIN_OTG2] = { [IMX8MM_POWER_DOMAIN_OTG2] = {
.genpd = { .genpd = {
.name = "usb-otg2", .name = "usb-otg2",
.flags = GENPD_FLAG_ACTIVE_WAKEUP,
}, },
.bits = { .bits = {
.pxx = IMX8MM_OTG2_SW_Pxx_REQ, .pxx = IMX8MM_OTG2_SW_Pxx_REQ,
...@@ -1232,6 +1234,7 @@ static const struct imx_pgc_domain imx8mn_pgc_domains[] = { ...@@ -1232,6 +1234,7 @@ static const struct imx_pgc_domain imx8mn_pgc_domains[] = {
[IMX8MN_POWER_DOMAIN_OTG1] = { [IMX8MN_POWER_DOMAIN_OTG1] = {
.genpd = { .genpd = {
.name = "usb-otg1", .name = "usb-otg1",
.flags = GENPD_FLAG_ACTIVE_WAKEUP,
}, },
.bits = { .bits = {
.pxx = IMX8MN_OTG1_SW_Pxx_REQ, .pxx = IMX8MN_OTG1_SW_Pxx_REQ,
......
...@@ -210,9 +210,14 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) ...@@ -210,9 +210,14 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
bc->bus_power_dev = genpd_dev_pm_attach_by_name(dev, "bus"); bc->bus_power_dev = genpd_dev_pm_attach_by_name(dev, "bus");
if (IS_ERR(bc->bus_power_dev)) if (IS_ERR(bc->bus_power_dev)) {
return dev_err_probe(dev, PTR_ERR(bc->bus_power_dev), if (PTR_ERR(bc->bus_power_dev) == -ENODEV)
"failed to attach power domain \"bus\"\n"); return dev_err_probe(dev, -EPROBE_DEFER,
"failed to attach power domain \"bus\"\n");
else
return dev_err_probe(dev, PTR_ERR(bc->bus_power_dev),
"failed to attach power domain \"bus\"\n");
}
for (i = 0; i < bc_data->num_domains; i++) { for (i = 0; i < bc_data->num_domains; i++) {
const struct imx8m_blk_ctrl_domain_data *data = &bc_data->domains[i]; const struct imx8m_blk_ctrl_domain_data *data = &bc_data->domains[i];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment