Merge tag 'imx-drivers-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo...
authorArnd Bergmann <arnd@arndb.de>
Mon, 14 Aug 2023 16:00:57 +0000 (18:00 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 14 Aug 2023 16:01:15 +0000 (18:01 +0200)
i.MX drivers update for 6.6:

- A series from NXP i.MX developers (Peng Fan, etc.) to update imx-scu
  and imx-scu-irq firmware drivers.
- Add dedicated lockdep class for nested genpd locks to fix a lockdep
  warning in imx93-blk-ctrl driver.
- A change from Rob to explicitly include correct DT headers for i.MX
  SoC drivers.
- Use devm_platform_ioremap_resource() in imx-weim bus driver.

* tag 'imx-drivers-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  firmware: imx: scu-irq: support identifying SCU wakeup source from sysfs
  firmware: imx: scu-irq: enlarge the IMX_SC_IRQ_NUM_GROUP
  firmware: imx: scu-irq: add imx_scu_irq_get_status
  firmware: imx: scu-irq: fix RCU complaint after M4 partition reset
  firmware: imx: scu: use EOPNOTSUPP
  firmware: imx: scu: use soc name for soc_id
  firmware: imx: scu: increase RPC timeout
  firmware: imx: scu: change init level to subsys_initcall_sync
  soc: imx: Explicitly include correct DT includes
  bus: imx-weim: use devm_platform_ioremap_resource
  soc: imx: imx93-blk-ctrl: Add dedicated lockdep class for nested genpd locks

Link: https://lore.kernel.org/r/20230813133354.847010-1-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1  2 
drivers/genpd/imx/gpcv2.c
drivers/genpd/imx/imx8m-blk-ctrl.c
drivers/genpd/imx/imx8mp-blk-ctrl.c
drivers/genpd/imx/imx93-blk-ctrl.c
drivers/genpd/imx/imx93-pd.c

@@@ -9,7 -9,7 +9,7 @@@
   */
  
  #include <linux/clk.h>
- #include <linux/of_device.h>
+ #include <linux/of.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
  #include <linux/pm_runtime.h>
@@@ -8,7 -8,8 +8,8 @@@
  #include <linux/device.h>
  #include <linux/interconnect.h>
  #include <linux/module.h>
- #include <linux/of_device.h>
+ #include <linux/of.h>
+ #include <linux/of_platform.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
  #include <linux/pm_runtime.h>
@@@ -10,7 -10,7 +10,7 @@@
  #include <linux/device.h>
  #include <linux/interconnect.h>
  #include <linux/module.h>
- #include <linux/of_device.h>
+ #include <linux/of.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
  #include <linux/pm_runtime.h>
@@@ -6,7 -6,7 +6,7 @@@
  #include <linux/clk.h>
  #include <linux/device.h>
  #include <linux/module.h>
- #include <linux/of_device.h>
+ #include <linux/of.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>
  #include <linux/pm_runtime.h>
@@@ -187,6 -187,8 +187,8 @@@ static int imx93_blk_ctrl_power_off(str
        return 0;
  }
  
+ static struct lock_class_key blk_ctrl_genpd_lock_class;
  static int imx93_blk_ctrl_probe(struct platform_device *pdev)
  {
        struct device *dev = &pdev->dev;
                        goto cleanup_pds;
                }
  
+               /*
+                * We use runtime PM to trigger power on/off of the upstream GPC
+                * domain, as a strict hierarchical parent/child power domain
+                * setup doesn't allow us to meet the sequencing requirements.
+                * This means we have nested locking of genpd locks, without the
+                * nesting being visible at the genpd level, so we need a
+                * separate lock class to make lockdep aware of the fact that
+                * this are separate domain locks that can be nested without a
+                * self-deadlock.
+                */
+               lockdep_set_class(&domain->genpd.mlock,
+                                 &blk_ctrl_genpd_lock_class);
                bc->onecell_data.domains[i] = &domain->genpd;
        }
  
@@@ -5,8 -5,8 +5,8 @@@
  
  #include <linux/clk.h>
  #include <linux/delay.h>
- #include <linux/of_device.h>
  #include <linux/iopoll.h>
+ #include <linux/mod_devicetable.h>
  #include <linux/module.h>
  #include <linux/platform_device.h>
  #include <linux/pm_domain.h>