On 09/03/2014 07:26 PM, Mike Turquette wrote: > Quoting Tomeu Vizoso (2014-09-03 08:29:07) >> Hi, >> >> I'm sending this v9 in order to fix a few build errors found by Intel's 0day >> build farm. Notable changes are: >> >> * Changes to mxs-saif.c have been folded into 2/6, in order for >> bisectability to be preserved. >> >> * All floor constraints are applied first, then all ceiling constraints. >> This is to keep the behavior deterministic and to prevent any situation in >> which floor constraints could trump over ceiling constraints. >> >> * A WARN has been added to flag inconsistent ranges of constraints. >> >> * Redundant includes of linux/clk.h have been removed. >> >> These series depend on Mike's patches at [0] and is rebased on top of >> today's clk-next. > > Applied to clk-next! Thanks much for your hard work on this series. It > has turned out pretty nice. And thanks to Rabin for the original > proposal and to Andrew Lunn for helping to resolve the Kirkwood issues.
Indeed, I'm very grateful at all the help that these series have gotten along the way. > I would not be surprised if we have to fix some stuff up leading up to > the next merge window. The split between struct clk and struct clk_core > will likely cause some of the pending patches on the list to break and I > might ask for your help with the Coccinelle script ;-) I have the same feeling, but I think we should be able to deal with them fairly quickly and painlessly. Since yesterday I haven't gotten any 0day build error, but I'm not sure the build bots have tried my branch yet. Thanks, Tomeu > I guess we'll know soon if things start to explode once this hits > linux-next... > > Thanks again, > Mike > >> >> Follows the original cover letter blurb: >> >> I'm retaking Rabin's patches [1] for splitting the clk API in two: one API >> for >> clk consumers and another for providers. The consumer API uses a clk >> structure >> that just keeps track of the consumer and has a reference to the actual >> clk_core struct, which is used internally. >> >> I have kept a patch from Rabin that aims to aid in debugging nested >> enable/disable calls, though my personal aim is to allow more than one >> consumer >> to influence the final, effective frequency rate. For now this is limited to >> setting floor and ceiling constraints, with the short-term aim of allowing >> devfreq and thermal drivers to set floor and ceiling frequencies on the >> memory >> clock, respectively. >> >> For those functions in the consumer clk API that were called from providers, >> I >> have added variants to clk-provider.h that are the same only that accept a >> clk_core instead. These functions are prefixed with clk_provider_. >> >> Patch 1/7 just adds a bunch of defines with the goal of having all the >> renames >> in their own commit while preserving git-bisectability, with patch 3/7 >> containing the rename itself as generated by the Coccinelle script in [2]. >> Patch 2/7 is needed because sound/soc/mxs/mxs-saif.c calls both the consumer >> and the provider API. The actual implementation of the API split comes in >> patch >> 4/7. I will be happy to organize the refactoring differently if anybody has a >> better idea. >> >> Patch 5/7 warns when there's an unbalanced usage of the enable and disable >> APIs, and patch 6/7 adds the API for setting floor and ceiling frequencies, >> per >> consumer. Patch 7/7 will warn when prepare/unprepare are used unbalanced, >> printing the code location of the last call to unprepare. >> >> [0] http://thread.gmane.org/gmane.linux.kernel/1778132 >> [1] http://thread.gmane.org/gmane.linux.kernel/1402006 >> [2] >> http://cgit.collabora.com/git/user/tomeu/linux.git/log/?h=clk-refactoring-9 >> >> Thanks, >> >> Tomeu >> >> Tomeu Vizoso (6): >> clk: Add temporary mapping to the existing API >> clk: Move all drivers to use internal API >> clk: use struct clk only for external API >> clk: per-user clock accounting for debug >> clk: Add floor and ceiling constraints to clock rates >> clk: Warn of unbalanced clk_prepare() calls >> >> arch/arm/mach-dove/common.c | 10 +- >> arch/arm/mach-imx/clk-busy.c | 9 +- >> arch/arm/mach-imx/clk-fixup-div.c | 4 +- >> arch/arm/mach-imx/clk-fixup-mux.c | 4 +- >> arch/arm/mach-imx/clk-gate2.c | 4 +- >> arch/arm/mach-imx/clk-imx1.c | 3 +- >> arch/arm/mach-imx/clk-imx21.c | 3 +- >> arch/arm/mach-imx/clk-imx25.c | 9 +- >> arch/arm/mach-imx/clk-imx27.c | 5 +- >> arch/arm/mach-imx/clk-imx31.c | 11 +- >> arch/arm/mach-imx/clk-imx35.c | 23 +- >> arch/arm/mach-imx/clk-imx51-imx53.c | 78 +-- >> arch/arm/mach-imx/clk-imx6q.c | 54 +- >> arch/arm/mach-imx/clk-imx6sl.c | 14 +- >> arch/arm/mach-imx/clk-imx6sx.c | 98 ++-- >> arch/arm/mach-imx/clk-pfd.c | 5 +- >> arch/arm/mach-imx/clk-pllv1.c | 5 +- >> arch/arm/mach-imx/clk-pllv2.c | 5 +- >> arch/arm/mach-imx/clk-pllv3.c | 5 +- >> arch/arm/mach-imx/clk-vf610.c | 43 +- >> arch/arm/mach-imx/clk.c | 11 +- >> arch/arm/mach-imx/clk.h | 42 +- >> arch/arm/mach-msm/clock-pcom.c | 2 +- >> arch/arm/mach-msm/clock.c | 2 +- >> arch/arm/mach-mv78xx0/common.c | 2 +- >> arch/arm/mach-omap2/board-cm-t35.c | 2 +- >> arch/arm/mach-omap2/cclock3xxx_data.c | 371 +++++++------ >> arch/arm/mach-omap2/clkt2xxx_dpll.c | 5 +- >> arch/arm/mach-omap2/clkt2xxx_dpllcore.c | 5 +- >> arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c | 11 +- >> arch/arm/mach-omap2/clkt34xx_dpll3m2.c | 3 +- >> arch/arm/mach-omap2/clkt_clksel.c | 46 +- >> arch/arm/mach-omap2/clkt_dpll.c | 8 +- >> arch/arm/mach-omap2/clock.c | 52 +- >> arch/arm/mach-omap2/clock.h | 18 +- >> arch/arm/mach-omap2/clock3xxx.c | 23 +- >> arch/arm/mach-omap2/clock3xxx.h | 4 +- >> arch/arm/mach-omap2/clock_common_data.c | 2 +- >> arch/arm/mach-omap2/clockdomain.c | 9 +- >> arch/arm/mach-omap2/clockdomain.h | 4 +- >> arch/arm/mach-omap2/display.c | 6 +- >> arch/arm/mach-omap2/dpll3xxx.c | 29 +- >> arch/arm/mach-omap2/dpll44xx.c | 5 +- >> arch/arm/mach-omap2/mcbsp.c | 5 +- >> arch/arm/mach-omap2/omap_device.c | 10 +- >> arch/arm/mach-omap2/omap_hwmod.c | 42 +- >> arch/arm/mach-omap2/omap_hwmod.h | 12 +- >> arch/arm/mach-omap2/pm24xx.c | 12 +- >> arch/arm/mach-orion5x/common.c | 2 +- >> arch/arm/mach-shmobile/clock.c | 10 +- >> arch/arm/mach-vexpress/spc.c | 4 +- >> arch/arm/plat-orion/common.c | 22 +- >> arch/arm/plat-orion/include/plat/common.h | 12 +- >> arch/powerpc/platforms/512x/clock-commonclk.c | 48 +- >> drivers/clk/at91/clk-main.c | 24 +- >> drivers/clk/at91/clk-master.c | 6 +- >> drivers/clk/at91/clk-peripheral.c | 12 +- >> drivers/clk/at91/clk-pll.c | 6 +- >> drivers/clk/at91/clk-plldiv.c | 6 +- >> drivers/clk/at91/clk-programmable.c | 10 +- >> drivers/clk/at91/clk-slow.c | 24 +- >> drivers/clk/at91/clk-smd.c | 6 +- >> drivers/clk/at91/clk-system.c | 6 +- >> drivers/clk/at91/clk-usb.c | 20 +- >> drivers/clk/at91/clk-utmi.c | 6 +- >> drivers/clk/bcm/clk-kona-setup.c | 6 +- >> drivers/clk/bcm/clk-kona.c | 12 +- >> drivers/clk/bcm/clk-kona.h | 2 +- >> drivers/clk/berlin/berlin2-avpll.c | 4 +- >> drivers/clk/berlin/berlin2-avpll.h | 4 +- >> drivers/clk/berlin/berlin2-div.c | 2 +- >> drivers/clk/berlin/berlin2-div.h | 2 +- >> drivers/clk/berlin/berlin2-pll.c | 2 +- >> drivers/clk/berlin/berlin2-pll.h | 2 +- >> drivers/clk/berlin/bg2.c | 14 +- >> drivers/clk/berlin/bg2q.c | 10 +- >> drivers/clk/clk-axi-clkgen.c | 3 +- >> drivers/clk/clk-axm5516.c | 4 +- >> drivers/clk/clk-bcm2835.c | 2 +- >> drivers/clk/clk-composite.c | 11 +- >> drivers/clk/clk-conf.c | 18 +- >> drivers/clk/clk-devres.c | 31 ++ >> drivers/clk/clk-divider.c | 8 +- >> drivers/clk/clk-efm32gg.c | 3 +- >> drivers/clk/clk-fixed-factor.c | 6 +- >> drivers/clk/clk-fixed-rate.c | 8 +- >> drivers/clk/clk-fractional-divider.c | 4 +- >> drivers/clk/clk-gate.c | 4 +- >> drivers/clk/clk-highbank.c | 8 +- >> drivers/clk/clk-ls1x.c | 16 +- >> drivers/clk/clk-max77686.c | 10 +- >> drivers/clk/clk-moxart.c | 8 +- >> drivers/clk/clk-mux.c | 7 +- >> drivers/clk/clk-nomadik.c | 15 +- >> drivers/clk/clk-nspire.c | 4 +- >> drivers/clk/clk-palmas.c | 7 +- >> drivers/clk/clk-ppc-corenet.c | 8 +- >> drivers/clk/clk-s2mps11.c | 6 +- >> drivers/clk/clk-si5351.c | 17 +- >> drivers/clk/clk-si570.c | 4 +- >> drivers/clk/clk-twl6040.c | 3 +- >> drivers/clk/clk-u300.c | 13 +- >> drivers/clk/clk-vt8500.c | 4 +- >> drivers/clk/clk-wm831x.c | 7 +- >> drivers/clk/clk-xgene.c | 12 +- >> drivers/clk/clk.c | 724 >> +++++++++++++++++--------- >> drivers/clk/clk.h | 12 +- >> drivers/clk/clkdev.c | 130 ++++- >> drivers/clk/hisilicon/clk-hi3620.c | 9 +- >> drivers/clk/hisilicon/clk-hip04.c | 1 - >> drivers/clk/hisilicon/clk.c | 17 +- >> drivers/clk/hisilicon/clk.h | 2 +- >> drivers/clk/hisilicon/clkgate-separated.c | 5 +- >> drivers/clk/keystone/gate.c | 7 +- >> drivers/clk/keystone/pll.c | 11 +- >> drivers/clk/mmp/clk-apbc.c | 5 +- >> drivers/clk/mmp/clk-apmu.c | 5 +- >> drivers/clk/mmp/clk-frac.c | 4 +- >> drivers/clk/mmp/clk-mmp2.c | 14 +- >> drivers/clk/mmp/clk-pxa168.c | 12 +- >> drivers/clk/mmp/clk-pxa910.c | 12 +- >> drivers/clk/mmp/clk.h | 8 +- >> drivers/clk/mvebu/clk-corediv.c | 4 +- >> drivers/clk/mvebu/clk-cpu.c | 8 +- >> drivers/clk/mvebu/common.c | 15 +- >> drivers/clk/mvebu/kirkwood.c | 6 +- >> drivers/clk/mxs/clk-div.c | 5 +- >> drivers/clk/mxs/clk-frac.c | 5 +- >> drivers/clk/mxs/clk-imx23.c | 5 +- >> drivers/clk/mxs/clk-imx28.c | 5 +- >> drivers/clk/mxs/clk-pll.c | 5 +- >> drivers/clk/mxs/clk-ref.c | 5 +- >> drivers/clk/mxs/clk.h | 17 +- >> drivers/clk/qcom/clk-rcg.c | 8 +- >> drivers/clk/qcom/clk-rcg2.c | 14 +- >> drivers/clk/qcom/clk-regmap.c | 2 +- >> drivers/clk/qcom/clk-regmap.h | 2 +- >> drivers/clk/qcom/common.c | 6 +- >> drivers/clk/qcom/gcc-apq8084.c | 2 +- >> drivers/clk/qcom/gcc-ipq806x.c | 2 +- >> drivers/clk/qcom/gcc-msm8660.c | 2 +- >> drivers/clk/qcom/gcc-msm8960.c | 2 +- >> drivers/clk/qcom/gcc-msm8974.c | 2 +- >> drivers/clk/qcom/mmcc-msm8960.c | 6 +- >> drivers/clk/rockchip/clk-pll.c | 9 +- >> drivers/clk/rockchip/clk-rk3188.c | 2 +- >> drivers/clk/rockchip/clk-rk3288.c | 2 +- >> drivers/clk/rockchip/clk-rockchip.c | 2 +- >> drivers/clk/rockchip/clk.c | 23 +- >> drivers/clk/rockchip/clk.h | 5 +- >> drivers/clk/samsung/clk-exynos-audss.c | 16 +- >> drivers/clk/samsung/clk-exynos-clkout.c | 9 +- >> drivers/clk/samsung/clk-exynos3250.c | 1 - >> drivers/clk/samsung/clk-exynos4.c | 7 +- >> drivers/clk/samsung/clk-exynos5250.c | 1 - >> drivers/clk/samsung/clk-exynos5260.c | 1 - >> drivers/clk/samsung/clk-exynos5410.c | 1 - >> drivers/clk/samsung/clk-exynos5420.c | 1 - >> drivers/clk/samsung/clk-exynos5440.c | 1 - >> drivers/clk/samsung/clk-pll.c | 6 +- >> drivers/clk/samsung/clk-pll.h | 2 +- >> drivers/clk/samsung/clk-s3c2410-dclk.c | 30 +- >> drivers/clk/samsung/clk-s3c2410.c | 1 - >> drivers/clk/samsung/clk-s3c2412.c | 1 - >> drivers/clk/samsung/clk-s3c2443.c | 1 - >> drivers/clk/samsung/clk-s3c64xx.c | 1 - >> drivers/clk/samsung/clk-s5pv210-audss.c | 16 +- >> drivers/clk/samsung/clk.c | 22 +- >> drivers/clk/samsung/clk.h | 3 +- >> drivers/clk/shmobile/clk-div6.c | 2 +- >> drivers/clk/shmobile/clk-emev2.c | 4 +- >> drivers/clk/shmobile/clk-mstp.c | 6 +- >> drivers/clk/shmobile/clk-r8a7740.c | 6 +- >> drivers/clk/shmobile/clk-r8a7779.c | 6 +- >> drivers/clk/shmobile/clk-rcar-gen2.c | 10 +- >> drivers/clk/shmobile/clk-rz.c | 6 +- >> drivers/clk/sirf/clk-atlas6.c | 3 +- >> drivers/clk/sirf/clk-common.c | 30 +- >> drivers/clk/sirf/clk-prima2.c | 3 +- >> drivers/clk/socfpga/clk-gate.c | 3 +- >> drivers/clk/socfpga/clk-periph.c | 3 +- >> drivers/clk/socfpga/clk-pll.c | 5 +- >> drivers/clk/spear/clk-aux-synth.c | 8 +- >> drivers/clk/spear/clk-frac-synth.c | 4 +- >> drivers/clk/spear/clk-gpt-synth.c | 4 +- >> drivers/clk/spear/clk-vco-pll.c | 8 +- >> drivers/clk/spear/clk.h | 14 +- >> drivers/clk/spear/spear1310_clock.c | 3 +- >> drivers/clk/spear/spear1340_clock.c | 3 +- >> drivers/clk/spear/spear3xx_clock.c | 17 +- >> drivers/clk/spear/spear6xx_clock.c | 3 +- >> drivers/clk/st/clk-flexgen.c | 12 +- >> drivers/clk/st/clkgen-fsyn.c | 22 +- >> drivers/clk/st/clkgen-mux.c | 32 +- >> drivers/clk/st/clkgen-pll.c | 34 +- >> drivers/clk/sunxi/clk-a10-hosc.c | 2 +- >> drivers/clk/sunxi/clk-a20-gmac.c | 2 +- >> drivers/clk/sunxi/clk-factors.c | 4 +- >> drivers/clk/sunxi/clk-sun6i-apb0-gates.c | 2 +- >> drivers/clk/sunxi/clk-sun6i-apb0.c | 2 +- >> drivers/clk/sunxi/clk-sun6i-ar100.c | 6 +- >> drivers/clk/sunxi/clk-sun8i-apb0.c | 2 +- >> drivers/clk/sunxi/clk-sunxi.c | 18 +- >> drivers/clk/tegra/clk-audio-sync.c | 4 +- >> drivers/clk/tegra/clk-divider.c | 5 +- >> drivers/clk/tegra/clk-periph-gate.c | 5 +- >> drivers/clk/tegra/clk-periph.c | 9 +- >> drivers/clk/tegra/clk-pll-out.c | 5 +- >> drivers/clk/tegra/clk-pll.c | 41 +- >> drivers/clk/tegra/clk-super.c | 5 +- >> drivers/clk/tegra/clk-tegra-audio.c | 5 +- >> drivers/clk/tegra/clk-tegra-fixed.c | 9 +- >> drivers/clk/tegra/clk-tegra-periph.c | 13 +- >> drivers/clk/tegra/clk-tegra-pmc.c | 5 +- >> drivers/clk/tegra/clk-tegra-super-gen4.c | 9 +- >> drivers/clk/tegra/clk-tegra114.c | 11 +- >> drivers/clk/tegra/clk-tegra124.c | 7 +- >> drivers/clk/tegra/clk-tegra20.c | 13 +- >> drivers/clk/tegra/clk-tegra30.c | 9 +- >> drivers/clk/tegra/clk.c | 25 +- >> drivers/clk/tegra/clk.h | 38 +- >> drivers/clk/ti/apll.c | 8 +- >> drivers/clk/ti/clk-2xxx.c | 8 +- >> drivers/clk/ti/clk-33xx.c | 18 +- >> drivers/clk/ti/clk-3xxx.c | 8 +- >> drivers/clk/ti/clk-43xx.c | 8 +- >> drivers/clk/ti/clk-44xx.c | 16 +- >> drivers/clk/ti/clk-54xx.c | 25 +- >> drivers/clk/ti/clk-7xx.c | 28 +- >> drivers/clk/ti/clk-dra7-atl.c | 6 +- >> drivers/clk/ti/clk.c | 2 +- >> drivers/clk/ti/clockdomain.c | 4 +- >> drivers/clk/ti/composite.c | 2 +- >> drivers/clk/ti/divider.c | 6 +- >> drivers/clk/ti/dpll.c | 8 +- >> drivers/clk/ti/fixed-factor.c | 2 +- >> drivers/clk/ti/gate.c | 2 +- >> drivers/clk/ti/interface.c | 2 +- >> drivers/clk/ti/mux.c | 6 +- >> drivers/clk/ux500/abx500-clk.c | 3 +- >> drivers/clk/ux500/clk-prcc.c | 8 +- >> drivers/clk/ux500/clk-prcmu.c | 16 +- >> drivers/clk/ux500/clk-sysctrl.c | 10 +- >> drivers/clk/ux500/clk.h | 23 +- >> drivers/clk/ux500/u8500_clk.c | 3 +- >> drivers/clk/ux500/u8500_of_clk.c | 13 +- >> drivers/clk/ux500/u8540_clk.c | 3 +- >> drivers/clk/ux500/u9540_clk.c | 1 - >> drivers/clk/versatile/clk-icst.c | 5 +- >> drivers/clk/versatile/clk-icst.h | 2 +- >> drivers/clk/versatile/clk-impd1.c | 19 +- >> drivers/clk/versatile/clk-realview.c | 3 +- >> drivers/clk/versatile/clk-sp810.c | 30 +- >> drivers/clk/versatile/clk-versatile.c | 3 +- >> drivers/clk/versatile/clk-vexpress-osc.c | 2 +- >> drivers/clk/versatile/clk-vexpress.c | 6 +- >> drivers/clk/x86/clk-lpt.c | 3 +- >> drivers/clk/zynq/clkc.c | 22 +- >> drivers/clk/zynq/pll.c | 4 +- >> drivers/gpu/drm/msm/hdmi/hdmi_phy_8960.c | 3 +- >> drivers/media/platform/exynos4-is/media-dev.c | 18 +- >> drivers/media/platform/exynos4-is/media-dev.h | 7 +- >> drivers/media/platform/omap3isp/isp.h | 2 +- >> drivers/rtc/rtc-hym8563.c | 4 +- >> drivers/staging/imx-drm/imx-tve.c | 27 +- >> include/asm-generic/clkdev.h | 6 +- >> include/linux/clk-private.h | 51 +- >> include/linux/clk-provider.h | 137 +++-- >> include/linux/clk.h | 50 +- >> include/linux/clk/ti.h | 10 +- >> include/linux/clk/zynq.h | 3 +- >> include/linux/clkdev.h | 24 +- >> include/linux/platform_data/si5351.h | 4 +- >> sound/soc/mxs/mxs-saif.c | 4 +- >> 274 files changed, 2276 insertions(+), 1859 deletions(-) >> >> -- >> 1.9.3 >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/