<br><br>On Wednesday, October 6, 2021, Stephen Boyd <<a href="mailto:swboyd@chromium.org">swboyd@chromium.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This series is from discussion we had on reordering the device lists for<br>
drm shutdown paths[1]. I've introduced an 'aggregate' bus that we put<br>
the aggregate device onto and then we probe the aggregate device once<br>
all the components are probed and call component_add(). The probe/remove<br>
hooks are where the bind/unbind calls go, and then a shutdown hook is<br>
added that can be used to shutdown the drm display pipeline at the right<br>
time.<br>
<br>
This works for me on my sc7180 board. I no longer get a warning from i2c<br>
at shutdown that we're trying to make an i2c transaction after the i2c<br>
bus has been shutdown. There's more work to do on the msm drm driver to<br>
extract component device resources like clks, regulators, etc. out of<br>
the component bind function into the driver probe but I wanted to move<br>
everything over now in other component drivers before tackling that<br>
problem.<br>
<br>
I'll definitely be sending a v3 so this is partially a request for<br>
testing to shake out any more problems. Tested-by tags would be appreciated,<br>
and Acked-by/Reviewed-by tags too. I sent this to gregkh which may be<br>
incorrect but I don't know what better tree to send it all through.<br>
Maybe drm?<br>
<br>
I'll be faster at resending this next time, sorry for the long delay!<br>
<br></blockquote><div><br></div><div>Yet another avoidance of mathematically proven device dependency graph...</div><div><br></div><div><br></div><div>Can we actually find and ask a mathematician to look into the problem and suggest real solution instead of all these ugly hacks: deferred probe (ugliest hack, how it even came into kernel?), component framework, custom approaches on how to see if devices are in the system (ASoC hack).</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Changes since v1 (<a href="https://lore.kernel.org/r/20210520002519.3538432-1-swboyd@chromium.org" target="_blank">https://lore.kernel.org/r/<wbr>20210520002519.3538432-1-<wbr>swboyd@chromium.org</a>):<br>
 - Use devlink to connect components to the aggregate device<br>
 - Don't set the registering device as a parent of the aggregate device<br>
 - New patch for bind_component/unbind_<wbr>component ops that takes the<br>
   aggregate device<br>
 - Convert all drivers in the tree to use the aggregate driver approach<br>
 - Allow one aggregate driver to be used for multiple aggregate devices<br>
<br>
[1] <a href="https://lore.kernel.org/r/20210508074118.1621729-1-swboyd@chromium.org" target="_blank">https://lore.kernel.org/r/<wbr>20210508074118.1621729-1-<wbr>swboyd@chromium.org</a><br>
<br>
Stephen Boyd (34):<br>
  component: Introduce struct aggregate_device<br>
  component: Introduce the aggregate bus_type<br>
  component: Move struct aggregate_device out to header file<br>
  drm/msm: Migrate to aggregate driver<br>
  component: Add {bind,unbind}_component() ops that take aggregate<br>
    device<br>
  drm/of: Add a drm_of_aggregate_probe() API<br>
  drm/komeda: Migrate to aggregate driver<br>
  drm/arm/hdlcd: Migrate to aggregate driver<br>
  drm/malidp: Migrate to aggregate driver<br>
  drm/armada: Migrate to aggregate driver<br>
  drm/etnaviv: Migrate to aggregate driver<br>
  drm/kirin: Migrate to aggregate driver<br>
  drm/exynos: Migrate to aggregate driver<br>
  drm/imx: Migrate to aggregate driver<br>
  drm/ingenic: Migrate to aggregate driver<br>
  drm/mcde: Migrate to aggregate driver<br>
  drm/mediatek: Migrate to aggregate driver<br>
  drm/meson: Migrate to aggregate driver<br>
  drm/omap: Migrate to aggregate driver<br>
  drm/rockchip: Migrate to aggregate driver<br>
  drm/sti: Migrate to aggregate driver<br>
  drm/sun4i: Migrate to aggregate driver<br>
  drm/tilcdc: Migrate to aggregate driver<br>
  drm/vc4: Migrate to aggregate driver<br>
  drm/zte: Migrate to aggregate driver<br>
  iommu/mtk: Migrate to aggregate driver<br>
  mei: Migrate to aggregate driver<br>
  power: supply: ab8500: Migrate to aggregate driver<br>
  fbdev: omap2: Migrate to aggregate driver<br>
  sound: hdac: Migrate to aggregate driver<br>
  ASoC: codecs: wcd938x: Migrate to aggregate driver<br>
  component: Get rid of drm_of_component_probe()<br>
  component: Remove component_master_ops and friends<br>
  component: Remove all references to 'master'<br>
<br>
Cc: Arnd Bergmann <<a href="mailto:arnd@arndb.de">arnd@arndb.de</a>><br>
Cc: Benjamin Gaignard <<a href="mailto:benjamin.gaignard@linaro.org">benjamin.gaignard@linaro.org</a>><br>
Cc: Chen Feng <<a href="mailto:puck.chen@hisilicon.com">puck.chen@hisilicon.com</a>><br>
Cc: Chen-Yu Tsai <<a href="mailto:wens@csie.org">wens@csie.org</a>><br>
Cc: Christian Gmeiner <<a href="mailto:christian.gmeiner@gmail.com">christian.gmeiner@gmail.com</a>><br>
Cc: Chun-Kuang Hu <<a href="mailto:chunkuang.hu@kernel.org">chunkuang.hu@kernel.org</a>><br>
Cc: Daniel Vetter <<a href="mailto:daniel.vetter@ffwll.ch">daniel.vetter@ffwll.ch</a>><br>
Cc: Emma Anholt <<a href="mailto:emma@anholt.net">emma@anholt.net</a>><br>
Cc: Greg Kroah-Hartman <<a href="mailto:gregkh@linuxfoundation.org">gregkh@linuxfoundation.org</a>><br>
Cc: "Heiko Stübner" <<a href="mailto:heiko@sntech.de">heiko@sntech.de</a>><br>
Cc: Inki Dae <<a href="mailto:inki.dae@samsung.com">inki.dae@samsung.com</a>><br>
Cc: James Qian Wang (Arm Technology China) <<a href="mailto:james.qian.wang@arm.com">james.qian.wang@arm.com</a>><br>
Cc: Jaroslav Kysela <<a href="mailto:perex@perex.cz">perex@perex.cz</a>><br>
Cc: Joerg Roedel <<a href="mailto:joro@8bytes.org">joro@8bytes.org</a>><br>
Cc: John Stultz <<a href="mailto:john.stultz@linaro.org">john.stultz@linaro.org</a>><br>
Cc: Joonyoung Shim <<a href="mailto:jy0922.shim@samsung.com">jy0922.shim@samsung.com</a>><br>
Cc: Jyri Sarha <<a href="mailto:jyri.sarha@iki.fi">jyri.sarha@iki.fi</a>><br>
Cc: Kai Vehmanen <<a href="mailto:kai.vehmanen@linux.intel.com">kai.vehmanen@linux.intel.com</a>><br>
Cc: Kyungmin Park <<a href="mailto:kyungmin.park@samsung.com">kyungmin.park@samsung.com</a>><br>
Cc: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@<wbr>ideasonboard.com</a>><br>
Cc: <<a href="mailto:linux-fbdev@vger.kernel.org">linux-fbdev@vger.kernel.org</a>><br>
Cc: <<a href="mailto:linux-omap@vger.kernel.org">linux-omap@vger.kernel.org</a>><br>
Cc: <<a href="mailto:linux-pm@vger.kernel.org">linux-pm@vger.kernel.org</a>><br>
Cc: Liviu Dudau <<a href="mailto:liviu.dudau@arm.com">liviu.dudau@arm.com</a>><br>
Cc: Lucas Stach <<a href="mailto:l.stach@pengutronix.de">l.stach@pengutronix.de</a>><br>
Cc: Mark Brown <<a href="mailto:broonie@kernel.org">broonie@kernel.org</a>><br>
Cc: Maxime Ripard <<a href="mailto:mripard@kernel.org">mripard@kernel.org</a>><br>
Cc: Neil Armstrong <<a href="mailto:narmstrong@baylibre.com">narmstrong@baylibre.com</a>><br>
Cc: Paul Cercueil <<a href="mailto:paul@crapouillou.net">paul@crapouillou.net</a>><br>
Cc: Philipp Zabel <<a href="mailto:p.zabel@pengutronix.de">p.zabel@pengutronix.de</a>><br>
Cc: "Rafael J. Wysocki" <<a href="mailto:rafael@kernel.org">rafael@kernel.org</a>><br>
Cc: Rob Clark <<a href="mailto:robdclark@gmail.com">robdclark@gmail.com</a>><br>
Cc: Russell King <<a href="mailto:linux@armlinux.org.uk">linux@armlinux.org.uk</a>><br>
Cc: Russell King <<a href="mailto:linux+etnaviv@armlinux.org.uk">linux+etnaviv@armlinux.org.uk</a><wbr>><br>
Cc: Russell King <<a href="mailto:rmk+kernel@arm.linux.org.uk">rmk+kernel@arm.linux.org.uk</a>><br>
Cc: Sandy Huang <<a href="mailto:hjc@rock-chips.com">hjc@rock-chips.com</a>><br>
Cc: Saravana Kannan <<a href="mailto:saravanak@google.com">saravanak@google.com</a>><br>
Cc: Sebastian Reichel <<a href="mailto:sre@kernel.org">sre@kernel.org</a>><br>
Cc: Seung-Woo Kim <<a href="mailto:sw0312.kim@samsung.com">sw0312.kim@samsung.com</a>><br>
Cc: Takashi Iwai <<a href="mailto:tiwai@suse.com">tiwai@suse.com</a>><br>
Cc: Tian Tao <<a href="mailto:tiantao6@hisilicon.com">tiantao6@hisilicon.com</a>><br>
Cc: Tomas Winkler <<a href="mailto:tomas.winkler@intel.com">tomas.winkler@intel.com</a>><br>
Cc: Tomi Valkeinen <<a href="mailto:tomba@kernel.org">tomba@kernel.org</a>><br>
Cc: Will Deacon <<a href="mailto:will@kernel.org">will@kernel.org</a>><br>
Cc: Xinliang Liu <<a href="mailto:xinliang.liu@linaro.org">xinliang.liu@linaro.org</a>><br>
Cc: Xinwei Kong <<a href="mailto:kong.kongxinwei@hisilicon.com">kong.kongxinwei@hisilicon.com</a><wbr>><br>
Cc: Yong Wu <<a href="mailto:yong.wu@mediatek.com">yong.wu@mediatek.com</a>><br>
<br>
 drivers/base/component.c                      | 555 +++++++++++-------<br>
 .../gpu/drm/arm/display/<wbr>komeda/komeda_drv.c   |  20 +-<br>
 drivers/gpu/drm/arm/hdlcd_drv.<wbr>c               |  21 +-<br>
 drivers/gpu/drm/arm/malidp_<wbr>drv.c              |  21 +-<br>
 drivers/gpu/drm/armada/armada_<wbr>drv.c           |  23 +-<br>
 drivers/gpu/drm/drm_drv.c                     |   2 +-<br>
 drivers/gpu/drm/drm_of.c                      |  20 +-<br>
 drivers/gpu/drm/etnaviv/<wbr>etnaviv_drv.c         |  20 +-<br>
 drivers/gpu/drm/exynos/exynos_<wbr>drm_drv.c       |  21 +-<br>
 .../gpu/drm/hisilicon/kirin/<wbr>kirin_drm_drv.c   |  20 +-<br>
 drivers/gpu/drm/imx/imx-drm-<wbr>core.c            |  20 +-<br>
 drivers/gpu/drm/ingenic/<wbr>ingenic-drm-drv.c     |  24 +-<br>
 drivers/gpu/drm/mcde/mcde_drv.<wbr>c               |  23 +-<br>
 drivers/gpu/drm/mediatek/mtk_<wbr>drm_drv.c        |  20 +-<br>
 drivers/gpu/drm/meson/meson_<wbr>drv.c             |  21 +-<br>
 drivers/gpu/drm/msm/msm_drv.c                 |  46 +-<br>
 drivers/gpu/drm/omapdrm/dss/<wbr>dss.c             |  17 +-<br>
 drivers/gpu/drm/rockchip/<wbr>rockchip_drm_drv.c   |  20 +-<br>
 drivers/gpu/drm/sti/sti_drv.c                 |  20 +-<br>
 drivers/gpu/drm/sun4i/sun4i_<wbr>drv.c             |  26 +-<br>
 drivers/gpu/drm/tilcdc/tilcdc_<wbr>drv.c           |  28 +-<br>
 drivers/gpu/drm/vc4/vc4_drv.c                 |  20 +-<br>
 drivers/gpu/drm/zte/zx_drm_<wbr>drv.c              |  20 +-<br>
 drivers/iommu/mtk_iommu.c                     |  14 +-<br>
 drivers/iommu/mtk_iommu.h                     |   6 +-<br>
 drivers/iommu/mtk_iommu_v1.c                  |  14 +-<br>
 drivers/misc/mei/hdcp/mei_<wbr>hdcp.c              |  22 +-<br>
 drivers/power/supply/ab8500_<wbr>charger.c         |  22 +-<br>
 drivers/video/fbdev/omap2/<wbr>omapfb/dss/dss.c    |  20 +-<br>
 include/drm/drm_of.h                          |   9 +-<br>
 include/linux/component.h                     |  92 ++-<br>
 sound/hda/hdac_component.c                    |  21 +-<br>
 sound/soc/codecs/wcd938x.c                    |  20 +-<br>
 33 files changed, 780 insertions(+), 488 deletions(-)<br>
<br>
<br>
base-commit: e4e737bb5c170df6135a127739a9e6<wbr>148ee3da82<br>
-- <br>
<a href="https://chromeos.dev" target="_blank">https://chromeos.dev</a><br>
<br>
</blockquote><br><br>-- <br>With Best Regards,<br>Andy Shevchenko<br><br><br>