From patchwork Sun Sep 6 12:08:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 1358301 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=libero.it Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=libero.it header.i=@libero.it header.a=rsa-sha256 header.s=s2014 header.b=pgHye6+d; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Bkrbm5g8Yz9sTH for ; Sun, 6 Sep 2020 22:40:18 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 00AED8232F; Sun, 6 Sep 2020 14:40:11 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=libero.it Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=libero.it header.i=@libero.it header.b="pgHye6+d"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A29C1822A7; Sun, 6 Sep 2020 14:09:36 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FORGED_SPF_HELO,FREEMAIL_FROM,SPF_HELO_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from libero.it (smtp-34.italiaonline.it [213.209.10.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8259D822A7 for ; Sun, 6 Sep 2020 14:09:33 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=libero.it Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dariobin@libero.it Received: from passgat-Modern-14-A10M.homenet.telecomitalia.it ([79.31.32.113]) by smtp-34.iol.local with ESMTPA id EtTxk0p2Om3ibEtU2kIiKo; Sun, 06 Sep 2020 14:09:32 +0200 x-libjamoibt: 1601 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=libero.it; s=s2014; t=1599394172; bh=cNtMKdYRHUZeW4nDRlOpIdrdqOFCwSc8O0Lf64jRRwU=; h=From; b=pgHye6+dSomu8H94JJzZ3hHFQt+gMdIPgWr0r6IdAP92WMNyUsO1hj48YO5rDcLEX 8RHC+JZ4vvO7Ex33MNNl/7fYVP8rcrL+8RrmjiJFnZiIrh1wakQsnlRZrPajpu6zoF wRwnG5HVOod7qLIycyIMSBgJ7SY7R/UYkadP+CadC6bhbIvlAa3lSiFKWzkAZcMbOe nyNocKgM5hrT3gni67Y85bDTwlOrkvn1YlDVfdMeBIInXQZmtmXfnDHqHvwE8KVHX7 EPdwqBpdZXIhgPg8gec7eDQun+ozX6Wcb3tgU5FLqVsIGnXS6++7XuMX3xSS+mknNn yx6EuRU0sQnQg== X-CNFS-Analysis: v=2.4 cv=Xas3cK15 c=1 sm=1 tr=0 ts=5f54d17c a=9myQFBeCGQ66/mXSe6vdPA==:117 a=9myQFBeCGQ66/mXSe6vdPA==:17 a=xgHi9-lMXBjaUqWBvBsA:9 a=61yeXSIJVHbMWot7:21 a=yk9YVVdAhr_FpnvF:21 From: Dario Binacchi To: u-boot@lists.denx.de Cc: Dario Binacchi , AKASHI Takahiro , Alexey Brodkin , Alison Wang , Anatolij Gustschin , Andy Fleming , Angelo Dureghello , Baruch Siach , Bin Meng , Chunfeng Yun , Daniel Schwierzeck , Eugen Hristev , Felix Brack , Finley Xiao , Grygorii Strashko , Hannes Schmelzer , Heiko Schocher , Heiko Stuebner , Jagan Teki , Jean-Jacques Hiblot , Lokesh Vutla , Lukasz Majewski , Macpaul Lin , Marek Vasut , Mario Six , Masahiro Yamada , Michal Simek , Nobuhiro Iwamatsu , Patrick Delaunay , Peng Fan , Philippe Reynes , Pragnesh Patel , Priyanka Jain , Sam Shih , Scott McNutt , Sean Anderson , Simon Glass , Stefan Roese , Stephen Warren , Tero Kristo , Thomas Chou , Tom Rini , Trevor Woerner , Walter Lozano , Wolfgang Denk , Wolfgang Wallner , Yash Shah Subject: [PATCH v2 00/30] Add DM support for omap PWM backlight Date: Sun, 6 Sep 2020 14:08:41 +0200 Message-Id: <20200906120911.750-1-dariobin@libero.it> X-Mailer: git-send-email 2.17.1 X-CMAE-Envelope: MS4xfOW+luoXrjZkk7zXjdP+2SBpasnFn6fSKePWvT3o+5TYSoEhfKV2U32LIoqRudWf4tbnq/tCSqz2SRTWPN6dgeA8nWzRXbluhL9kd428cMD/goniIdos kuCQLwjsZ5RZKPnOj1F0D3OVsosKh6ZERlhoKRt3WenSAW7VFQB0zLPAGswXqiV3MDGvWAgGeTWOx3S4+QatcGIyO5xYUE8cQzeVCyEYuPoEWGLkdjRyz92Q gEi4gg0JYXC8/EJxvHtIVOu5MSq9keC5gKCO+x4CFqXC9vsuNztm/jnlduejFJGNXYIZ2wdb1iWlwRrnDCkSzpOz97Hamn0DWIGAjF71z2vbJNwoE5dBWrEE B2kNlf1mjWLMOh8s0f2pL3ifdDGfl2S20xGkuxfJMb2zxkj8xH4smgS3SRdCVN7dOS8rngXUCpKzVfQjiJrw+VoLdN9Bdq3aMWUOJAiFHq32CtP+08FGba0o YOHthEc0hMqoORWQqjoLch0/jfcoQbJL8CwontiriSOyXuS2s/PzSa+dH8/O/nfwgPoS6nEZ8Rvr6a0oTjfzTl7RES1Wy5+pLRKXiv33w59ZBnjd9sulrJDl wDSVLbmWN83bur6iKcSpUNM3oQztCA9qTbKginQx+CURn3qjEviRj2wZCAECjTeg7LbAscak06cy3NimwmkM1ggDZCBqDe2Aqr1JTrKyCIy/MbMW3VO+BmSR fKl53iI5OUqRbJhzWpHIyPajlo99TahzIyNL41kTUJKt7PYOVK2grJpcl+buisO523KOxn4NCWrGJu7v3tAonZyjp/Cqe2akikjWmRlNegfrLB0vr71AVOZA nCwB0/KWBOOM2oXkQbOG49VJHmTlPo0qaWjT0DcOWBast9CFcXC/VlLJJOUJASa1g+W1Nd3UvkEifSt6g1K/M4FxxBZjayWpDBeE9HOlm9/jX5bkVPu7tfRi iFNGEbhW8+M9ZTf7SI0RoBIPH4nUvAsIuPhdG572/mVKwljBsyopBpP+tyUvAAUr82+9+s0pDkyy+5mUpELHoFgIFq92kiqfbYQZX4h0ZpSWdj7rYajVMlno LNDLwsHAQWXFhL2tlCJBzgus5/jETxaCggB1i2chvIPOR5nWZVWxXP4uH6zlvbnws2d9WRFtEoTLkuXIv5EGnNvSNhK9zfcIMuqW3RgJId4PDWFlJMqDgX1J DE7Kdiz5ROldDmFOU3ZFufg++JMyQN5mIs5qbXDANtQSAF+CP8YOtcofA/Cld+w+HaJwOCW2O+IO4bIS8Me2s5u/AwPj22riPvOOFJ1qjOu+yfcpxVga3Eev LD4p0uZPvBrlRffg1Ixg8Q/s3X2D/BtATLhHmcz3u6DEkXNdTu4iVMf6yJQE37MK3HOrY3dZ6jvKWj5jzpkBwJ9v7b0JCMbhrC/PeA6mi1HzFtS7aRGKBZkA rLbQUSUQWmZp61SjCpZDGjOk0sDWwwo63YOrMnhYeDQnYFCL4jbXNd2ISOBIhdJ93UlWqdj6QdYtN6mkypSQYN9r0iYBgSgY3K30xOAGH1cHSKwvKw97q6KA Fp3v27tEYm1dTnTYFUsuGdl20CaJQkYReCvBx7nUOAXMS6YaAcF+t7c8nXMRaY59BbQS4acG2AP76zFZrEhDDRvBkU5CW/RD6MYgSamZtrPLzEqQ6Ji0L18r 0x984UmnXlsjPRRSpHDQwdAM1EvglOWLHKKqTSFQBx2sZ5sGhldWBvbJmFpXdPUtkBstLmwdspk= X-Mailman-Approved-At: Sun, 06 Sep 2020 14:40:10 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean The series was born from the need to manage the PWM backlight of the display connected to my beaglebone board. To hit the target, I had to develop drivers for PWM management which in turn relied on drivers for managing timers and clocks, all developed according to the driver model. My intention was to use the SoC-specific API only at strictly necessary points in the code. My previous patches for migrating the AM335x display driver to the driver model had required the implementation of additional functions outside the concerns of the driver, (settings for dividing the pixel clock rate, configuring the display DPLL rate, ....) not being able to use the API of the related clock drivers. This series shouldn't have repeated the same kind of mistake. Furthermore, I also wanted to fix that kind of forced choice. Almost everything should have been accessible via the driver model API. In the series there are also some patches that could be submitted separately, but which I have however inserted to avoid applying future patches to incorporate them. With this last consideration, I hope I have convincingly justified the large number of patches in the series. The patch enabling address translation into a CPU physical address from device-tree even in case of crossing levels with #size-cells = <0>, is crucial for the series. The previous implementation was unable to perform the address translation required by the am33xx device tree. I tried to apply in a conservative way as few changes as possible and to verify the execution of all the tests already developed, as well as the new ones I added for the new feature. Changes in v2: - Add the clk_ prefix to the divider functions. - Add kernel-doc comments to the exported functions. - Merged to patch [09/31] clk: ti: refactor mux and divider clock drivers. - Remove the 'ti_am3_prcm_clocks' driver. Handle 'prcm_clocks' node in the 'ti_am3_prcm' driver. - Update the commit message. - Fix a missing line in the commit message. - Add dm_flags to global_data structure and GD_DM_FLG_SIZE_CELLS_0 macro to test without recompiling. - Update the OF_CHECK_COUNTS macro in order to have just one #define by bringing the GD_DM_FLG_SIZE_CELLS_0 into the expression. - Lower-case the 0xC019 hex number. - Remove the 'ti_am3_scm_clocks' driver. Handle 'scm_clocks' node in the 'ti_am3_scm' driver. - Update the commit message. Dario Binacchi (30): clk: remove a redundant header clk: export generic routines arch: sandbox: fix typo in clk.h clk: add clk_round_rate() clk: ti: add mux clock driver arm: ti: am33xx: add DPLL_EN_FAST_RELOCK_BYPASS macro clk: ti: am33xx: add DPLL clock drivers clk: ti: add divider clock driver clk: ti: add gate clock driver ti: am33xx: fix do_enable_clocks() to accept NULL parameters clk: ti: add support for clkctrl clocks clk: ti: move drivers to 'ti' directory clk: ti: omap4: add clock manager driver clk: ti: am335x: add clock manager driver fdt: translate address if #size-cells = <0> omap: timer: fix the rate setting misc: am33xx: add control module driver pwm: ti: am33xx: add enhanced pwm driver pwm: ti: am33xx: add subsystem driver video: backlight: fix pwm's duty cycle calculation video: backlight: fix pwm data structure description dm: core: improve uclass_get_device_by_phandle_id() description gpio: fix gpio_request_by_name() description dm: core: add a function to decode display timings video: omap: add panel driver video: omap: enable LCD clock domain through DM API video: omap: set LCD clock rate through DM API video: omap: split the legacy code from the DM code video: omap: move drivers to 'ti' directory board: ti: am335x-ice: get CDCE913 clock device arch/arm/dts/am335x-brppt1-mmc.dts | 3 +- arch/arm/dts/am335x-brppt1-nand.dts | 3 +- arch/arm/dts/am335x-brppt1-spi.dts | 3 +- arch/arm/dts/am335x-brsmarc1.dts | 2 +- arch/arm/dts/am335x-brxre1.dts | 3 +- arch/arm/dts/am335x-evm-u-boot.dtsi | 7 +- arch/arm/dts/am335x-evmsk-u-boot.dtsi | 6 +- arch/arm/dts/am335x-guardian-u-boot.dtsi | 8 +- arch/arm/dts/am335x-pdu001-u-boot.dtsi | 8 +- arch/arm/dts/am335x-pxm50-u-boot.dtsi | 6 +- arch/arm/dts/am335x-rut-u-boot.dtsi | 6 +- arch/arm/dts/am33xx.dtsi | 12 + arch/arm/dts/da850-evm-u-boot.dtsi | 8 +- arch/arm/include/asm/arch-am33xx/clock.h | 1 + arch/arm/mach-omap2/am33xx/clock.c | 10 +- arch/arm/mach-omap2/am33xx/clock_am33xx.c | 2 +- arch/sandbox/dts/test.dts | 67 +++ arch/sandbox/include/asm/clk.h | 35 +- board/ti/am335x/board.c | 2 +- board/ti/am43xx/board.c | 2 +- common/fdt_support.c | 6 +- doc/device-tree-bindings/arm/omap,ctrl.txt | 82 +++ doc/device-tree-bindings/arm/omap,prcm.txt | 63 +++ .../clock/clock-bindings.txt | 186 +++++++ .../clock/gpio-gate-clock.txt | 21 + .../clock/ti,autoidle.txt | 39 ++ doc/device-tree-bindings/clock/ti,clkctrl.txt | 61 +++ .../clock/ti,clockdomain.txt | 24 + doc/device-tree-bindings/clock/ti,divider.txt | 117 +++++ doc/device-tree-bindings/clock/ti,dpll.txt | 85 ++++ doc/device-tree-bindings/clock/ti,gate.txt | 106 ++++ doc/device-tree-bindings/clock/ti,mux.txt | 79 +++ .../pinctrl/pinctrl-single.txt | 255 ++++++++++ doc/device-tree-bindings/pwm/ti,ehrpwm.txt | 49 ++ doc/device-tree-bindings/pwm/ti,pwmss.txt | 58 +++ drivers/clk/Kconfig | 9 +- drivers/clk/Makefile | 2 +- drivers/clk/clk-divider.c | 24 +- drivers/clk/clk-uclass.c | 15 + drivers/clk/clk_sandbox.c | 17 + drivers/clk/clk_sandbox_test.c | 10 + drivers/clk/ti/Kconfig | 42 ++ drivers/clk/ti/Makefile | 18 + drivers/clk/ti/am3-prcm.c | 65 +++ drivers/clk/ti/clk-am3-dpll-x2.c | 78 +++ drivers/clk/ti/clk-am3-dpll.c | 267 ++++++++++ drivers/clk/ti/clk-ctrl.c | 102 ++++ drivers/clk/ti/clk-divider.c | 380 ++++++++++++++ drivers/clk/ti/clk-gate.c | 92 ++++ drivers/clk/ti/clk-mux.c | 252 ++++++++++ drivers/clk/{clk-ti-sci.c => ti/clk-sci.c} | 0 drivers/clk/ti/clk.c | 34 ++ drivers/clk/ti/clk.h | 13 + drivers/clk/ti/omap4-cm.c | 22 + drivers/core/Kconfig | 12 + drivers/core/fdtaddr.c | 2 +- drivers/core/of_addr.c | 14 +- drivers/core/ofnode.c | 7 +- drivers/core/read.c | 6 + drivers/core/root.c | 3 + drivers/misc/Kconfig | 7 + drivers/misc/Makefile | 1 + drivers/misc/ti-am3-scm.c | 81 +++ drivers/pwm/Kconfig | 13 + drivers/pwm/Makefile | 2 + drivers/pwm/pwm-ti-ehrpwm.c | 465 ++++++++++++++++++ drivers/pwm/pwm-ti-pwmss.c | 95 ++++ drivers/timer/omap-timer.c | 6 +- drivers/video/Kconfig | 5 +- drivers/video/Makefile | 2 +- drivers/video/pwm_backlight.c | 4 +- drivers/video/ti/Kconfig | 8 + drivers/video/ti/Makefile | 10 + drivers/video/{ => ti}/am335x-fb.c | 342 +------------ drivers/video/{ => ti}/am335x-fb.h | 4 - drivers/video/ti/tilcdc-panel.c | 171 +++++++ drivers/video/ti/tilcdc-panel.h | 14 + drivers/video/ti/tilcdc.c | 438 +++++++++++++++++ drivers/video/ti/tilcdc.h | 38 ++ include/asm-generic/global_data.h | 6 + include/asm-generic/gpio.h | 2 +- include/clk-uclass.h | 8 + include/clk.h | 29 ++ include/dm/read.h | 24 + include/dm/uclass.h | 3 +- include/linux/clk-provider.h | 58 ++- test/dm/clk.c | 22 + test/dm/panel.c | 12 +- test/dm/test-fdt.c | 148 +++++- 89 files changed, 4488 insertions(+), 441 deletions(-) create mode 100644 doc/device-tree-bindings/arm/omap,ctrl.txt create mode 100644 doc/device-tree-bindings/arm/omap,prcm.txt create mode 100644 doc/device-tree-bindings/clock/clock-bindings.txt create mode 100644 doc/device-tree-bindings/clock/gpio-gate-clock.txt create mode 100644 doc/device-tree-bindings/clock/ti,autoidle.txt create mode 100644 doc/device-tree-bindings/clock/ti,clkctrl.txt create mode 100644 doc/device-tree-bindings/clock/ti,clockdomain.txt create mode 100644 doc/device-tree-bindings/clock/ti,divider.txt create mode 100644 doc/device-tree-bindings/clock/ti,dpll.txt create mode 100644 doc/device-tree-bindings/clock/ti,gate.txt create mode 100644 doc/device-tree-bindings/clock/ti,mux.txt create mode 100644 doc/device-tree-bindings/pinctrl/pinctrl-single.txt create mode 100644 doc/device-tree-bindings/pwm/ti,ehrpwm.txt create mode 100644 doc/device-tree-bindings/pwm/ti,pwmss.txt create mode 100644 drivers/clk/ti/Kconfig create mode 100644 drivers/clk/ti/Makefile create mode 100644 drivers/clk/ti/am3-prcm.c create mode 100644 drivers/clk/ti/clk-am3-dpll-x2.c create mode 100644 drivers/clk/ti/clk-am3-dpll.c create mode 100644 drivers/clk/ti/clk-ctrl.c create mode 100644 drivers/clk/ti/clk-divider.c create mode 100644 drivers/clk/ti/clk-gate.c create mode 100644 drivers/clk/ti/clk-mux.c rename drivers/clk/{clk-ti-sci.c => ti/clk-sci.c} (100%) create mode 100644 drivers/clk/ti/clk.c create mode 100644 drivers/clk/ti/clk.h create mode 100644 drivers/clk/ti/omap4-cm.c create mode 100644 drivers/misc/ti-am3-scm.c create mode 100644 drivers/pwm/pwm-ti-ehrpwm.c create mode 100644 drivers/pwm/pwm-ti-pwmss.c create mode 100644 drivers/video/ti/Kconfig create mode 100644 drivers/video/ti/Makefile rename drivers/video/{ => ti}/am335x-fb.c (54%) rename drivers/video/{ => ti}/am335x-fb.h (97%) create mode 100644 drivers/video/ti/tilcdc-panel.c create mode 100644 drivers/video/ti/tilcdc-panel.h create mode 100644 drivers/video/ti/tilcdc.c create mode 100644 drivers/video/ti/tilcdc.h