Philipp Zabel
2017-Jul-19 15:25 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
The reset control API has two modes: exclusive access, where the driver expects to have full and immediate control over the state of the reset line, and shared (clock-like) access, where drivers only request reset deassertion while active, but don't care about the state of the reset line while inactive. Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting reset lines") started to transition the reset control request API calls to explicitly state whether the driver needs exclusive or shared reset control behavior. This series converts all drivers that currently implicitly request exclusive reset controls to the corresponding explicit API call. It is, for the most part, generated from the following semantic patch: @@ expression rstc, dev, id; @@ -rstc = reset_control_get(dev, id); +rstc = reset_control_get_exclusive(dev, id); @@ expression rstc, dev, id; @@ -rstc = reset_control_get_optional(dev, id); +rstc = reset_control_get_optional_exclusive(dev, id); @@ expression rstc, node, id; @@ -rstc = of_reset_control_get(node, id); +rstc = of_reset_control_get_exclusive(node, id); @@ expression rstc, node, index; @@ -rstc = of_reset_control_get_by_index(node, index); +rstc = of_reset_control_get_exclusive_by_index(node, index); @@ expression rstc, dev, id; @@ -rstc = devm_reset_control_get(dev, id); +rstc = devm_reset_control_get_exclusive(dev, id); @@ expression rstc, dev, id; @@ -rstc = devm_reset_control_get_optional(dev, id); +rstc = devm_reset_control_get_optional_exclusive(dev, id); @@ expression rstc, dev, index; @@ -rstc = devm_reset_control_get_by_index(dev, index); +rstc = devm_reset_control_get_exclusive_by_index(dev, index); After all driver patches are applied, the temporary transition helpers can be removed. regards Philipp Philipp Zabel (102): ARM: rockchip: explicitly request exclusive reset control ARM: socfpga: explicitly request exclusive reset control MIPS: pci-mt7620: explicitly request exclusive reset control ahci: st: explicitly request exclusive reset control ata: sata_gemini: explicitly request exclusive reset control ata: ahci_tegra: explicitly request exclusive reset control bus: sunxi-rsb: explicitly request exclusive reset control bus: tegra-gmi: explicitly request exclusive reset control clk: sunxi: explicitly request exclusive reset control clk: tegra: explicitly request exclusive reset control clocksource/drivers/timer-stm32: explicitly request exclusive reset control clocksource/drivers/sun5i: explicitly request exclusive reset control crypto: rockchip: explicitly request exclusive reset control crypto: sun4i-ss - request exclusive reset control PM / devfreq: tegra: explicitly request exclusive reset control dmaengine: stm32-dma: explicitly request exclusive reset control dmaengine: sun6i: explicitly request exclusive reset control dmaengine: tegra-apb: explicitly request exclusive reset control drm: kirin: explicitly request exclusive reset control drm/nouveau/tegra: explicitly request exclusive reset control drm/rockchip: explicitly request exclusive reset control drm/sti: explicitly request exclusive reset control drm/stm: explicitly request exclusive reset control drm/sun4i: explicitly request exclusive reset control drm/tegra: explicitly request exclusive reset control gpu: host1x: explicitly request exclusive reset control i2c: mv64xxx: explicitly request exclusive reset control i2c: stm32f4: explicitly request exclusive reset control i2c: sun6i-pw2i: explicitly request exclusive reset control i2c: tegra: explicitly request exclusive reset control iio: adc: rockchip_saradc: explicitly request exclusive reset control iio: dac: stm32-dac-core: explicitly request exclusive reset control Input: tegra-kbc - request exclusive reset control coda: explicitly request exclusive reset control st-rc: explicitly request exclusive reset control stm32-dcmi: explicitly request exclusive reset control rc: sunxi-cir: explicitly request exclusive reset control mmc: dw_mmc: explicitly request exclusive reset control mmc: sdhci-st: explicitly request exclusive reset control mmc: sunxi: explicitly request exclusive reset control mmc: tegra: explicitly request exclusive reset control mtd: nand: sunxi: explicitly request exclusive reset control mtd: spi-nor: stm32-quadspi: explicitly request exclusive reset control net: dsa: mt7530: explicitly request exclusive reset control net: ethernet: hisi_femac: explicitly request exclusive reset control net: ethernet: hix5hd2_gmac: explicitly request exclusive reset control net: stmmac: explicitly request exclusive reset control net: stmmac: dwc-qos: explicitly request exclusive reset control ath10k: explicitly request exclusive reset control nvmem: lpc18xx-eeprom: explicitly request exclusive reset control PCI: dwc: pcie-qcom: explicitly request exclusive reset control PCI: imx6: explicitly request exclusive reset control PCI: tegra: explicitly request exclusive reset control PCI: rockchip: explicitly request exclusive reset control phy: berlin-usb: explicitly request exclusive reset control PCI: mediatek: explicitly request exclusive reset control phy: qcom-usb-hs: explicitly request exclusive reset control phy: rockchip-pcie: explicitly request exclusive reset control phy: rockchip-typec: explicitly request exclusive reset control phy: rockchip-usb: explicitly request exclusive reset control phy: sun4i-usb: explicitly request exclusive reset control phy: sun9i-usb: explicitly request exclusive reset control phy: tegra: explicitly request exclusive reset control phy: qcom-qmp: explicitly request exclusive reset control phy: qcom-qusb2: explicitly request exclusive reset control pinctrl: stm32: explicitly request exclusive reset control pinctrl: sunxi: explicitly request exclusive reset control pinctrl: tegra: explicitly request exclusive reset control pwm: hibvt: explicitly request exclusive reset control pwm: tegra: explicitly request exclusive reset control remoteproc/keystone: explicitly request exclusive reset control remoteproc: qcom: explicitly request exclusive reset control remoteproc: st: explicitly request exclusive reset control soc: mediatek: PMIC wrap: explicitly request exclusive reset control soc/tegra: pmc: explicitly request exclusive reset control spi: stm32: explicitly request exclusive reset control spi: sun6i: explicitly request exclusive reset control spi: tegra20-slink: explicitly request exclusive reset control spi: tegra114: explicitly request exclusive reset control spi: tegra20-sflash: explicitly request exclusive reset control staging: nvec: explicitly request exclusive reset control thermal: rockchip: explicitly request exclusive reset control thermal: tegra: explicitly request exclusive reset control serial: 8250_dw: explicitly request exclusive reset control serial: tegra: explicitly request exclusive reset control usb: chipidea: msm: explicitly request exclusive reset control usb: dwc2: explicitly request exclusive reset control usb: host: ehci-tegra: explicitly request exclusive reset control usb: host: xhci-tegra: explicitly request exclusive reset control usb: musb: sunxi: explicitly request exclusive reset control usb: phy: msm: explicitly request exclusive reset control usb: phy: qcom-8x16-usb: explicitly request exclusive reset control watchdog: asm9260: explicitly request exclusive reset control watchdog: mt7621: explicitly request exclusive reset control watchdog: rt2880: explicitly request exclusive reset control watchdog: zx2967: explicitly request exclusive reset control ASoC: img: explicitly request exclusive reset control ASoC: stm32: explicitly request exclusive reset control ASoC: sun4i: explicitly request exclusive reset control ASoC: tegra: explicitly request exclusive reset control Documentation: devres: add explicit exclusive/shared reset control request calls reset: finish transition to explicit exclusive reset control requests Documentation/driver-model/devres.txt | 7 ++- arch/arm/mach-rockchip/platsmp.c | 2 +- arch/mips/pci/pci-mt7620.c | 2 +- drivers/ata/ahci_st.c | 6 +-- drivers/ata/ahci_tegra.c | 8 ++-- drivers/ata/sata_gemini.c | 4 +- drivers/bus/sunxi-rsb.c | 2 +- drivers/bus/tegra-gmi.c | 2 +- drivers/clk/sunxi/clk-sun9i-mmc.c | 2 +- drivers/clk/tegra/clk-dfll.c | 2 +- drivers/clocksource/timer-stm32.c | 2 +- drivers/clocksource/timer-sun5i.c | 2 +- drivers/crypto/rockchip/rk3288_crypto.c | 2 +- drivers/crypto/sunxi-ss/sun4i-ss-core.c | 3 +- drivers/devfreq/tegra-devfreq.c | 2 +- drivers/dma/stm32-dma.c | 2 +- drivers/dma/sun6i-dma.c | 2 +- drivers/dma/tegra20-apb-dma.c | 2 +- drivers/fpga/altera-hps2fpga.c | 3 +- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 2 +- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 2 +- drivers/gpu/drm/rockchip/cdn-dp-core.c | 8 ++-- drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 2 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 +- drivers/gpu/drm/sti/sti_hdmi.c | 2 +- drivers/gpu/drm/sti/sti_hqvdp.c | 2 +- drivers/gpu/drm/sti/sti_tvout.c | 2 +- drivers/gpu/drm/stm/ltdc.c | 2 +- drivers/gpu/drm/sun4i/sun4i_backend.c | 4 +- drivers/gpu/drm/sun4i/sun4i_tcon.c | 2 +- drivers/gpu/drm/sun4i/sun4i_tv.c | 2 +- drivers/gpu/drm/sun4i/sun6i_drc.c | 2 +- drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 +- drivers/gpu/drm/tegra/dc.c | 2 +- drivers/gpu/drm/tegra/dpaux.c | 3 +- drivers/gpu/drm/tegra/dsi.c | 2 +- drivers/gpu/drm/tegra/gr3d.c | 6 +-- drivers/gpu/drm/tegra/hdmi.c | 2 +- drivers/gpu/drm/tegra/sor.c | 2 +- drivers/gpu/host1x/dev.c | 2 +- drivers/i2c/busses/i2c-mv64xxx.c | 2 +- drivers/i2c/busses/i2c-stm32f4.c | 2 +- drivers/i2c/busses/i2c-sun6i-p2wi.c | 2 +- drivers/i2c/busses/i2c-tegra.c | 2 +- drivers/iio/adc/rockchip_saradc.c | 3 +- drivers/iio/dac/stm32-dac-core.c | 2 +- drivers/input/keyboard/tegra-kbc.c | 2 +- drivers/media/platform/coda/coda-common.c | 3 +- drivers/media/platform/stm32/stm32-dcmi.c | 2 +- drivers/media/rc/st_rc.c | 2 +- drivers/media/rc/sunxi-cir.c | 2 +- drivers/mmc/host/dw_mmc.c | 2 +- drivers/mmc/host/sdhci-st.c | 2 +- drivers/mmc/host/sdhci-tegra.c | 3 +- drivers/mmc/host/sunxi-mmc.c | 3 +- drivers/mtd/nand/sunxi_nand.c | 2 +- drivers/mtd/spi-nor/stm32-quadspi.c | 2 +- drivers/net/dsa/mt7530.c | 3 +- drivers/net/ethernet/hisilicon/hisi_femac.c | 4 +- drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 6 +-- .../ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c | 2 +- drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 3 +- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 4 +- drivers/net/wireless/ath/ath10k/ahb.c | 15 ++++--- drivers/nvmem/lpc18xx_eeprom.c | 2 +- drivers/pci/dwc/pci-imx6.c | 7 +-- drivers/pci/dwc/pcie-qcom.c | 40 +++++++++-------- drivers/pci/host/pci-tegra.c | 6 +-- drivers/pci/host/pcie-mediatek.c | 2 +- drivers/pci/host/pcie-rockchip.c | 15 ++++--- drivers/phy/allwinner/phy-sun4i-usb.c | 2 +- drivers/phy/allwinner/phy-sun9i-usb.c | 4 +- drivers/phy/marvell/phy-berlin-usb.c | 2 +- drivers/phy/qualcomm/phy-qcom-qmp.c | 4 +- drivers/phy/qualcomm/phy-qcom-qusb2.c | 3 +- drivers/phy/qualcomm/phy-qcom-usb-hs.c | 3 +- drivers/phy/rockchip/phy-rockchip-pcie.c | 2 +- drivers/phy/rockchip/phy-rockchip-typec.c | 6 +-- drivers/phy/rockchip/phy-rockchip-usb.c | 2 +- drivers/phy/tegra/xusb-tegra210.c | 4 +- drivers/phy/tegra/xusb.c | 2 +- drivers/pinctrl/stm32/pinctrl-stm32.c | 2 +- drivers/pinctrl/sunxi/pinctrl-sun6i-a31-r.c | 2 +- drivers/pinctrl/sunxi/pinctrl-sun8i-a23-r.c | 2 +- drivers/pinctrl/tegra/pinctrl-tegra-xusb.c | 2 +- drivers/pwm/pwm-hibvt.c | 2 +- drivers/pwm/pwm-tegra.c | 2 +- drivers/remoteproc/keystone_remoteproc.c | 2 +- drivers/remoteproc/qcom_q6v5_pil.c | 3 +- drivers/remoteproc/st_remoteproc.c | 6 ++- drivers/reset/core.c | 2 +- drivers/soc/mediatek/mtk-pmic-wrap.c | 5 ++- drivers/soc/tegra/pmc.c | 2 +- drivers/spi/spi-stm32.c | 2 +- drivers/spi/spi-sun6i.c | 2 +- drivers/spi/spi-tegra114.c | 2 +- drivers/spi/spi-tegra20-sflash.c | 2 +- drivers/spi/spi-tegra20-slink.c | 2 +- drivers/staging/nvec/nvec.c | 2 +- drivers/thermal/rockchip_thermal.c | 3 +- drivers/thermal/tegra/soctherm.c | 3 +- drivers/tty/serial/8250/8250_dw.c | 2 +- drivers/tty/serial/serial-tegra.c | 2 +- drivers/usb/chipidea/ci_hdrc_msm.c | 2 +- drivers/usb/dwc2/platform.c | 3 +- drivers/usb/host/ehci-tegra.c | 5 ++- drivers/usb/host/xhci-tegra.c | 6 ++- drivers/usb/musb/sunxi.c | 2 +- drivers/usb/phy/phy-msm-usb.c | 4 +- drivers/usb/phy/phy-qcom-8x16-usb.c | 2 +- drivers/watchdog/asm9260_wdt.c | 2 +- drivers/watchdog/mt7621_wdt.c | 2 +- drivers/watchdog/rt2880_wdt.c | 2 +- drivers/watchdog/zx2967_wdt.c | 2 +- include/linux/reset.h | 50 ---------------------- sound/soc/img/img-i2s-in.c | 2 +- sound/soc/img/img-i2s-out.c | 2 +- sound/soc/img/img-parallel-out.c | 2 +- sound/soc/img/img-spdif-in.c | 2 +- sound/soc/img/img-spdif-out.c | 2 +- sound/soc/stm/stm32_i2s.c | 2 +- sound/soc/stm/stm32_sai.c | 2 +- sound/soc/stm/stm32_spdifrx.c | 2 +- sound/soc/sunxi/sun4i-codec.c | 3 +- sound/soc/sunxi/sun4i-i2s.c | 2 +- sound/soc/sunxi/sun4i-spdif.c | 3 +- sound/soc/tegra/tegra30_ahub.c | 4 +- 128 files changed, 226 insertions(+), 235 deletions(-) -- 2.11.0 Cc: "David S. Miller" <davem at davemloft.net> Cc: "Emilio López" <emilio at elopez.com.ar> Cc: Adrian Hunter <adrian.hunter at intel.com> Cc: Alan Stern <stern at rowland.harvard.edu> Cc: Alan Tull <atull at kernel.org> Cc: Alexandre Torgue <alexandre.torgue at st.com> Cc: Andrew Lunn <andrew at lunn.ch> Cc: Ben Skeggs <bskeggs at redhat.com> Cc: Benjamin Gaignard <benjamin.gaignard at linaro.org> Cc: Bin Liu <b-liu at ti.com> Cc: Bjorn Andersson <bjorn.andersson at linaro.org> Cc: Bjorn Helgaas <bhelgaas at google.com> Cc: Boris Brezillon <boris.brezillon at free-electrons.com> Cc: Brian Norris <computersforpeace at gmail.com> Cc: Chanwoo Choi <cw00.choi at samsung.com> Cc: Chen Feng <puck.chen at hisilicon.com> Cc: Chen-Yu Tsai <wens at csie.org> Cc: Corentin Labbe <clabbe.montjoie at gmail.com> Cc: Cyrille Pitchen <cyrille.pitchen at wedev4u.fr> Cc: Dan Williams <dan.j.williams at intel.com> Cc: Daniel Lezcano <daniel.lezcano at linaro.org> Cc: David Airlie <airlied at linux.ie> Cc: David Woodhouse <dwmw2 at infradead.org> Cc: Dmitry Torokhov <dmitry.torokhov at gmail.com> Cc: Eduardo Valentin <edubezval at gmail.com> Cc: Felipe Balbi <balbi at kernel.org> Cc: Florian Fainelli <f.fainelli at gmail.com> Cc: Giuseppe Cavallaro <peppe.cavallaro at st.com> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org> Cc: Guenter Roeck <linux at roeck-us.net> Cc: Hartmut Knaack <knaack.h at gmx.de> Cc: Heiko Stuebner <heiko at sntech.de> Cc: Herbert Xu <herbert at gondor.apana.org.au> Cc: Jaehoon Chung <jh80.chung at samsung.com> Cc: Jiri Slaby <jslaby at suse.com> Cc: Joachim Eastwood <manabian at gmail.com> Cc: John Youn <johnyoun at synopsys.com> Cc: Jon Hunter <jonathanh at nvidia.com> Cc: Jonathan Cameron <jic23 at kernel.org> Cc: Jonathan Corbet <corbet at lwn.net> Cc: Jonathan Hunter <jonathanh at nvidia.com> Cc: Kalle Valo <kvalo at qca.qualcomm.com> Cc: Kishon Vijay Abraham I <kishon at ti.com> Cc: Kyungmin Park <kyungmin.park at samsung.com> Cc: Lars-Peter Clausen <lars at metafoo.de> Cc: Laxman Dewangan <ldewangan at nvidia.com> Cc: Lee Jones <lee.jones at linaro.org> Cc: Liam Girdwood <lgirdwood at gmail.com> Cc: Linus Walleij <linus.walleij at linaro.org> Cc: Lucas Stach <l.stach at pengutronix.de> Cc: Marc Dietrich <marvin24 at gmx.de> Cc: Marek Vasut <marek.vasut at gmail.com> Cc: Mark Brown <broonie at kernel.org> Cc: Mark Yao <mark.yao at rock-chips.com> Cc: Mathias Nyman <mathias.nyman at intel.com> Cc: Matthias Brugger <matthias.bgg at gmail.com> Cc: Maxime Coquelin <mcoquelin.stm32 at gmail.com> Cc: Maxime Ripard <maxime.ripard at free-electrons.com> Cc: Michael Turquette <mturquette at baylibre.com> Cc: Moritz Fischer <moritz.fischer at ettus.com> Cc: MyungJoo Ham <myungjoo.ham at samsung.com> Cc: Ohad Ben-Cohen <ohad at wizery.com> Cc: Patrice Chotard <patrice.chotard at st.com> Cc: Peter Chen <Peter.Chen at nxp.com> Cc: Peter De Schrijver <pdeschrijver at nvidia.com> Cc: Peter Meerwald-Stadler <pmeerw at pmeerw.net> Cc: Philippe Cornu <philippe.cornu at st.com> Cc: Prashant Gaikwad <pgaikwad at nvidia.com> Cc: Rakesh Iyer <riyer at nvidia.com> Cc: Ralf Baechle <ralf at linux-mips.org> Cc: Richard Weinberger <richard at nod.at> Cc: Richard Zhu <hongxing.zhu at nxp.com> Cc: Rongrong Zou <zourongrong at gmail.com> Cc: Ryder Lee <ryder.lee at mediatek.com> Cc: Salil Mehta <salil.mehta at huawei.com> Cc: Shawn Lin <shawn.lin at rock-chips.com> Cc: Srinivas Kandagatla <srinivas.kandagatla at linaro.org> Cc: Stanimir Varbanov <svarbanov at mm-sol.com> Cc: Stephen Boyd <sboyd at codeaurora.org> Cc: Tejun Heo <tj at kernel.org> Cc: Thierry Reding <thierry.reding at gmail.com> Cc: Thomas Gleixner <tglx at linutronix.de> Cc: Ulf Hansson <ulf.hansson at linaro.org> Cc: Vincent Abriou <vincent.abriou at st.com> Cc: Vinod Koul <vinod.koul at intel.com> Cc: Vivien Didelot <vivien.didelot at savoirfairelinux.com> Cc: Wim Van Sebroeck <wim at iguana.be> Cc: Wolfram Sang <wsa at the-dreams.de> Cc: Xinliang Liu <z.liuxinliang at hisilicon.com> Cc: Xinwei Kong <kong.kongxinwei at hisilicon.com> Cc: Yannick Fertre <yannick.fertre at st.com> Cc: Yisen Zhuang <yisen.zhuang at huawei.com> Cc: Zhang Rui <rui.zhang at intel.com> Cc: alsa-devel at alsa-project.org Cc: ath10k at lists.infradead.org Cc: devel at driverdev.osuosl.org Cc: dmaengine at vger.kernel.org Cc: dri-devel at lists.freedesktop.org Cc: linux-arm-kernel at lists.infradead.org Cc: linux-arm-msm at vger.kernel.org Cc: linux-clk at vger.kernel.org Cc: linux-crypto at vger.kernel.org Cc: linux-doc at vger.kernel.org Cc: linux-fpga at vger.kernel.org Cc: linux-gpio at vger.kernel.org Cc: linux-i2c at vger.kernel.org Cc: linux-ide at vger.kernel.org Cc: linux-iio at vger.kernel.org Cc: linux-input at vger.kernel.org Cc: linux-kernel at vger.kernel.org Cc: linux-media at vger.kernel.org Cc: linux-mediatek at lists.infradead.org Cc: linux-mips at linux-mips.org Cc: linux-mmc at vger.kernel.org Cc: linux-mtd at lists.infradead.org Cc: linux-pci at vger.kernel.org Cc: linux-pm at vger.kernel.org Cc: linux-pwm at vger.kernel.org Cc: linux-remoteproc at vger.kernel.org Cc: linux-rockchip at lists.infradead.org Cc: linux-serial at vger.kernel.org Cc: linux-spi at vger.kernel.org Cc: linux-tegra at vger.kernel.org Cc: linux-usb at vger.kernel.org Cc: linux-watchdog at vger.kernel.org Cc: linux-wireless at vger.kernel.org Cc: netdev at vger.kernel.org Cc: nouveau at lists.freedesktop.org
Philipp Zabel
2017-Jul-19 15:25 UTC
[Nouveau] [PATCH 020/102] drm/nouveau/tegra: explicitly request exclusive reset control
Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting reset lines") started to transition the reset control request API calls to explicitly state whether the driver needs exclusive or shared reset control behavior. Convert all drivers requesting exclusive resets to the explicit API call so the temporary transition helpers can be removed. No functional changes. Cc: Ben Skeggs <bskeggs at redhat.com> Cc: David Airlie <airlied at linux.ie> Cc: Thierry Reding <thierry.reding at gmail.com> Cc: Jonathan Hunter <jonathanh at nvidia.com> Cc: dri-devel at lists.freedesktop.org Cc: nouveau at lists.freedesktop.org Cc: linux-tegra at vger.kernel.org Signed-off-by: Philipp Zabel <p.zabel at pengutronix.de> --- drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c index 189ed80e21ffb..ac5d4cf058c25 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c @@ -282,7 +282,7 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func, } } - tdev->rst = devm_reset_control_get(&pdev->dev, "gpu"); + tdev->rst = devm_reset_control_get_exclusive(&pdev->dev, "gpu"); if (IS_ERR(tdev->rst)) { ret = PTR_ERR(tdev->rst); goto free; -- 2.11.0
Thomas Petazzoni
2017-Jul-19 19:15 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
Hello, On Wed, 19 Jul 2017 17:25:04 +0200, Philipp Zabel wrote:> The reset control API has two modes: exclusive access, where the driver > expects to have full and immediate control over the state of the reset > line, and shared (clock-like) access, where drivers only request reset > deassertion while active, but don't care about the state of the reset line > while inactive. > > Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting > reset lines") started to transition the reset control request API calls > to explicitly state whether the driver needs exclusive or shared reset > control behavior. > > This series converts all drivers that currently implicitly request > exclusive reset controls to the corresponding explicit API call. It is, > for the most part, generated from the following semantic patch: > > @@ > expression rstc, dev, id; > @@ > -rstc = reset_control_get(dev, id); > +rstc = reset_control_get_exclusive(dev, id);I don't know if it has been discussed in the past, so forgive me if it has been. Have you considered adding a "int flags" argument to the existing reset_control_get_*() functions, rather than introducing separate exclusive variants ? Indeed, with a "int flags" argument you could in the future add more variants/behaviors without actually multiplying the number of functions. Something like the "flags" argument for request_irq() for example. Best regards, Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
Maxime Ripard
2017-Jul-20 06:56 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
On Wed, Jul 19, 2017 at 05:25:04PM +0200, Philipp Zabel wrote:> The reset control API has two modes: exclusive access, where the driver > expects to have full and immediate control over the state of the reset > line, and shared (clock-like) access, where drivers only request reset > deassertion while active, but don't care about the state of the reset line > while inactive. > > Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting > reset lines") started to transition the reset control request API calls > to explicitly state whether the driver needs exclusive or shared reset > control behavior. > > This series converts all drivers that currently implicitly request > exclusive reset controls to the corresponding explicit API call. It is, > for the most part, generated from the following semantic patch: > > @@ > expression rstc, dev, id; > @@ > -rstc = reset_control_get(dev, id); > +rstc = reset_control_get_exclusive(dev, id); > @@ > expression rstc, dev, id; > @@ > -rstc = reset_control_get_optional(dev, id); > +rstc = reset_control_get_optional_exclusive(dev, id); > @@ > expression rstc, node, id; > @@ > -rstc = of_reset_control_get(node, id); > +rstc = of_reset_control_get_exclusive(node, id); > @@ > expression rstc, node, index; > @@ > -rstc = of_reset_control_get_by_index(node, index); > +rstc = of_reset_control_get_exclusive_by_index(node, index); > @@ > expression rstc, dev, id; > @@ > -rstc = devm_reset_control_get(dev, id); > +rstc = devm_reset_control_get_exclusive(dev, id); > @@ > expression rstc, dev, id; > @@ > -rstc = devm_reset_control_get_optional(dev, id); > +rstc = devm_reset_control_get_optional_exclusive(dev, id); > @@ > expression rstc, dev, index; > @@ > -rstc = devm_reset_control_get_by_index(dev, index); > +rstc = devm_reset_control_get_exclusive_by_index(dev, index); > > After all driver patches are applied, the temporary transition helpers > can be removed. > > regards > Philipp > > Philipp Zabel (102): > ARM: rockchip: explicitly request exclusive reset control > ARM: socfpga: explicitly request exclusive reset control > MIPS: pci-mt7620: explicitly request exclusive reset control > ahci: st: explicitly request exclusive reset control > ata: sata_gemini: explicitly request exclusive reset control > ata: ahci_tegra: explicitly request exclusive reset control > bus: sunxi-rsb: explicitly request exclusive reset control > bus: tegra-gmi: explicitly request exclusive reset control > clk: sunxi: explicitly request exclusive reset control > clk: tegra: explicitly request exclusive reset control > clocksource/drivers/timer-stm32: explicitly request exclusive reset > control > clocksource/drivers/sun5i: explicitly request exclusive reset control > crypto: rockchip: explicitly request exclusive reset control > crypto: sun4i-ss - request exclusive reset control > PM / devfreq: tegra: explicitly request exclusive reset control > dmaengine: stm32-dma: explicitly request exclusive reset control > dmaengine: sun6i: explicitly request exclusive reset control > dmaengine: tegra-apb: explicitly request exclusive reset control > drm: kirin: explicitly request exclusive reset control > drm/nouveau/tegra: explicitly request exclusive reset control > drm/rockchip: explicitly request exclusive reset control > drm/sti: explicitly request exclusive reset control > drm/stm: explicitly request exclusive reset control > drm/sun4i: explicitly request exclusive reset control > drm/tegra: explicitly request exclusive reset control > gpu: host1x: explicitly request exclusive reset control > i2c: mv64xxx: explicitly request exclusive reset control > i2c: stm32f4: explicitly request exclusive reset control > i2c: sun6i-pw2i: explicitly request exclusive reset control > i2c: tegra: explicitly request exclusive reset control > iio: adc: rockchip_saradc: explicitly request exclusive reset control > iio: dac: stm32-dac-core: explicitly request exclusive reset control > Input: tegra-kbc - request exclusive reset control > coda: explicitly request exclusive reset control > st-rc: explicitly request exclusive reset control > stm32-dcmi: explicitly request exclusive reset control > rc: sunxi-cir: explicitly request exclusive reset control > mmc: dw_mmc: explicitly request exclusive reset control > mmc: sdhci-st: explicitly request exclusive reset control > mmc: sunxi: explicitly request exclusive reset control > mmc: tegra: explicitly request exclusive reset control > mtd: nand: sunxi: explicitly request exclusive reset control > mtd: spi-nor: stm32-quadspi: explicitly request exclusive reset > control > net: dsa: mt7530: explicitly request exclusive reset control > net: ethernet: hisi_femac: explicitly request exclusive reset control > net: ethernet: hix5hd2_gmac: explicitly request exclusive reset > control > net: stmmac: explicitly request exclusive reset control > net: stmmac: dwc-qos: explicitly request exclusive reset control > ath10k: explicitly request exclusive reset control > nvmem: lpc18xx-eeprom: explicitly request exclusive reset control > PCI: dwc: pcie-qcom: explicitly request exclusive reset control > PCI: imx6: explicitly request exclusive reset control > PCI: tegra: explicitly request exclusive reset control > PCI: rockchip: explicitly request exclusive reset control > phy: berlin-usb: explicitly request exclusive reset control > PCI: mediatek: explicitly request exclusive reset control > phy: qcom-usb-hs: explicitly request exclusive reset control > phy: rockchip-pcie: explicitly request exclusive reset control > phy: rockchip-typec: explicitly request exclusive reset control > phy: rockchip-usb: explicitly request exclusive reset control > phy: sun4i-usb: explicitly request exclusive reset control > phy: sun9i-usb: explicitly request exclusive reset control > phy: tegra: explicitly request exclusive reset control > phy: qcom-qmp: explicitly request exclusive reset control > phy: qcom-qusb2: explicitly request exclusive reset control > pinctrl: stm32: explicitly request exclusive reset control > pinctrl: sunxi: explicitly request exclusive reset control > pinctrl: tegra: explicitly request exclusive reset control > pwm: hibvt: explicitly request exclusive reset control > pwm: tegra: explicitly request exclusive reset control > remoteproc/keystone: explicitly request exclusive reset control > remoteproc: qcom: explicitly request exclusive reset control > remoteproc: st: explicitly request exclusive reset control > soc: mediatek: PMIC wrap: explicitly request exclusive reset control > soc/tegra: pmc: explicitly request exclusive reset control > spi: stm32: explicitly request exclusive reset control > spi: sun6i: explicitly request exclusive reset control > spi: tegra20-slink: explicitly request exclusive reset control > spi: tegra114: explicitly request exclusive reset control > spi: tegra20-sflash: explicitly request exclusive reset control > staging: nvec: explicitly request exclusive reset control > thermal: rockchip: explicitly request exclusive reset control > thermal: tegra: explicitly request exclusive reset control > serial: 8250_dw: explicitly request exclusive reset control > serial: tegra: explicitly request exclusive reset control > usb: chipidea: msm: explicitly request exclusive reset control > usb: dwc2: explicitly request exclusive reset control > usb: host: ehci-tegra: explicitly request exclusive reset control > usb: host: xhci-tegra: explicitly request exclusive reset control > usb: musb: sunxi: explicitly request exclusive reset control > usb: phy: msm: explicitly request exclusive reset control > usb: phy: qcom-8x16-usb: explicitly request exclusive reset control > watchdog: asm9260: explicitly request exclusive reset control > watchdog: mt7621: explicitly request exclusive reset control > watchdog: rt2880: explicitly request exclusive reset control > watchdog: zx2967: explicitly request exclusive reset control > ASoC: img: explicitly request exclusive reset control > ASoC: stm32: explicitly request exclusive reset control > ASoC: sun4i: explicitly request exclusive reset control > ASoC: tegra: explicitly request exclusive reset control > Documentation: devres: add explicit exclusive/shared reset control > request calls > reset: finish transition to explicit exclusive reset control requestsFor all sunxi patches: Acked-by: Maxime Ripard <maxime.ripard at free-electrons.com> Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 801 bytes Desc: not available URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170720/2b6f2825/attachment-0001.sig>
Greg Kroah-Hartman
2017-Jul-20 08:11 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
On Wed, Jul 19, 2017 at 05:25:04PM +0200, Philipp Zabel wrote:> The reset control API has two modes: exclusive access, where the driver > expects to have full and immediate control over the state of the reset > line, and shared (clock-like) access, where drivers only request reset > deassertion while active, but don't care about the state of the reset line > while inactive. > > Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting > reset lines") started to transition the reset control request API calls > to explicitly state whether the driver needs exclusive or shared reset > control behavior. > > This series converts all drivers that currently implicitly request > exclusive reset controls to the corresponding explicit API call. It is, > for the most part, generated from the following semantic patch:Hey, I'm all for large api changes, but this really seems ackward, isn't there a "better" way to do this? Why not, as you say the "implicit" request is exclusive, just leave everything alone and state that the "reset_control_get()" call is exclusive and make the shared one the "odd" usage as that seems to not be the normal case. That should be a much smaller patch right? That way you don't break everything here, and require 100+ patches to just change the name of a function from one to another and do nothing else. thanks, greg k-h
Philipp Zabel
2017-Jul-20 09:24 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
Hi Greg, The patches in this series are completely independent of each other, and I would like the subsystem maintainers to apply them at their own leisure. Well, except for the last one, which I will apply only after there are no more users of the transition helpers. On Thu, 2017-07-20 at 10:11 +0200, Greg Kroah-Hartman wrote:> On Wed, Jul 19, 2017 at 05:25:04PM +0200, Philipp Zabel wrote: > > The reset control API has two modes: exclusive access, where the driver > > expects to have full and immediate control over the state of the reset > > line, and shared (clock-like) access, where drivers only request reset > > deassertion while active, but don't care about the state of the reset line > > while inactive. > > > > Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting > > reset lines") started to transition the reset control request API calls > > to explicitly state whether the driver needs exclusive or shared reset > > control behavior. > > > > This series converts all drivers that currently implicitly request > > exclusive reset controls to the corresponding explicit API call. It is, > > for the most part, generated from the following semantic patch: > > Hey, I'm all for large api changes, but this really seems ackward, isn't > there a "better" way to do this?It is a bit awkward. I am sorry I haven't done this earlier. Quite a few new drivers started using the old API after the explicit requests were introduced last year.> Why not, as you say the "implicit" request is exclusive, just leave > everything alone and state that the "reset_control_get()" call is > exclusiveI think it is better to let the drivers explicitly state what they expect from the API, and using reset_control_get_exclusive vs _shared helps driver developers to make a conscious decision. Further, the implicit API call predates shared reset support, so it is not clear that all of the old users really need exclusive control. A few drivers have been switched to the shared API already.> and make the shared one the "odd" usage as that seems to not > be the normal case.I am not sure, there have been people arguing that the "clock-like" case really is the common one. I suppose some of those drivers touched by the 100 patches in this series could also be changed to shared. But I don't dare to make this decision for each of them.> That should be a much smaller patch right? > > That way you don't break everything here, and require 100+ patches to > just change the name of a function from one to another and do nothing > else.I don't break anything here, and I'm absolutely fine with squashing patches together per subsystem where that is preferable. regards Philipp
Philipp Zabel
2017-Jul-20 09:36 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
Hi Thomas, On Wed, 2017-07-19 at 21:15 +0200, Thomas Petazzoni wrote:> Hello, > > On Wed, 19 Jul 2017 17:25:04 +0200, Philipp Zabel wrote: > > The reset control API has two modes: exclusive access, where the driver > > expects to have full and immediate control over the state of the reset > > line, and shared (clock-like) access, where drivers only request reset > > deassertion while active, but don't care about the state of the reset line > > while inactive. > > > > Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting > > reset lines") started to transition the reset control request API calls > > to explicitly state whether the driver needs exclusive or shared reset > > control behavior. > > > > This series converts all drivers that currently implicitly request > > exclusive reset controls to the corresponding explicit API call. It is, > > for the most part, generated from the following semantic patch: > > > > @@ > > expression rstc, dev, id; > > @@ > > -rstc = reset_control_get(dev, id); > > +rstc = reset_control_get_exclusive(dev, id); > > I don't know if it has been discussed in the past, so forgive me if it > has been. Have you considered adding a "int flags" argument to the > existing reset_control_get_*() functions, rather than introducing > separate exclusive variants ? > > Indeed, with a "int flags" argument you could in the future add more > variants/behaviors without actually multiplying the number of > functions. Something like the "flags" argument for request_irq() for > example.I can't find the discussion right now, but I remember we had talked about this in the past. Behind the scenes, all the inline API functions already call common entry points with flags (well, currently separate bool parameters for shared and optional). One reason against exposing those as an int flags in the user facing API is the possibility to accidentally provide a wrong value. regards Philipp
Heiko Stuebner
2017-Jul-20 20:32 UTC
[Nouveau] [PATCH 000/102] Convert drivers to explicit reset API
Hi,> crypto: rockchip: explicitly request exclusive reset control > iio: adc: rockchip_saradc: explicitly request exclusive reset control > PCI: rockchip: explicitly request exclusive reset control > phy: rockchip-pcie: explicitly request exclusive reset control > phy: rockchip-typec: explicitly request exclusive reset control > phy: rockchip-usb: explicitly request exclusive reset control > thermal: rockchip: explicitly request exclusive reset controlfor the driver-related Rockchip changes Acked-by: Heiko Stuebner <heiko at sntech.de>
Reasonably Related Threads
- [PATCH 000/102] Convert drivers to explicit reset API
- [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend()
- [PATCH 00/35 linux-next] constify of_device_id array
- [PATCH 00/35 linux-next] constify of_device_id array
- [PATCH 7/7] drm: Split out drm_probe_helper.h