[U-Boot] [PATCH v5 00/18] clk: Port Linux common clock framework [CCF] to U-boot (tag: v5.1.12)

Schrempf Frieder frieder.schrempf at kontron.de
Tue Jun 25 09:32:29 UTC 2019


Hi Lukasz,

On 24.06.19 15:50, Lukasz Majewski wrote:
> This patch series brings the files from Linux kernel (SHA1: 5752b50477da
> Linux 5.1.12 to provide clocks support as it is used on the Linux kernel
> with Common Clock Framework [CCF] setup.
> 
> This series also fixes several problems with current clocks and provides
> sandbox tests for functions added to clk-uclass.c file.
> 
> CCF impact to U-Boot size:
> --------------------------
> 		SPL		U-Boot.img
> Without CCF:		51 KiB		358 KiB
> With CCF:		55 KiB		363 KiB
> Size increase:		1.3%		7.2%

The size increase numbers seem to be a bit off. It's 7.8% for SPL (which 
is quite a lot) and 1.4% for U-Boot proper from your size values.

By the way: Thanks for the new version. I'm currently still 
experimenting with your v3 and Peng's patches for i.MX8MM on top of 
2019.04. I hope I have time to rebase on master and v5 soon.

Thanks,
Frieder

> 
> The SPL implementation is not yet optimized (no OF_PLATDATA, etc).
> 
> Repository:
> https://github.com/lmajewski/u-boot-dfu/commits/CCF-v5
> 
> Applicable on top of u-boot/master:
> SHA1: 77f6e2dd0551d8a825bab391a1bd6b838874bcd4
> 
> Travis-CI:
> https://travis-ci.org/lmajewski/u-boot-dfu/builds/549603356
> 
> 
> Changes in v6:
> - Use dev->uclass_priv pointer to store pointer to clk
> 
> Changes in v5:
> - s/U-boot/U-Boot/g
> - Update Linux version to 5.1.12
> - Add paragraph regarding sandbox CCF testing (common uclass code)
> - Use long long to store rate value (to avoid int overflow and also return
>    errors correctly)
> - Use u32 to avoid checkpatch warning
> - s/U-boot/U-Boot/g
> - Replace dev->driver_data with dev_get_clk_ptr() wrapper on uclass_priv
> - Replace ulong with long long (to accommodate large freqs and return
>    errors)
> - s/U-boot/U-Boot/g
> - Check if the relevant code has changed between Linux tag v5.0-rc3 and
>    v5.1.12 (no changes - the version can be safely updated).
> - Use imply CLK_IMX6Q in Kconfig for (SPL_)CCF
> - Fix clk-fixed-factor implementation (kzalloc needed for correct Sandbox
>    operation)
> - Fix gate2 implementation
> - Use dev->uclass_priv instead of dev->driver_data to store back pointer
>    to the struct clk.
> - Split and introduce earlier the clk-provider.h header file
> 
> Changes in v4:
> - New patch
> - Port some more Linux code to facilitate imx8 code porting (most notably
>    flags)
> - Explicitly use container_of() based macro to provide struct clk in various
>    places (e.g. gate2, mux, etc)
>    Following patches has been squashed:
>    http://patchwork.ozlabs.org/patch/1093141/
>    http://patchwork.ozlabs.org/patch/1093142/
>    http://patchwork.ozlabs.org/patch/1093146/
> 
> Changes in v3:
> - New patch
> - The rate information is now cached into struct clk field
> - The clk_get_parent() is used to get pointer to the parent struct clk
> - Replace -ENODEV with -ENOENT
> - Use **clkp instead of **c
> - Replace dev->driver_data with dev_get_clk_ptr() wrapper on uclas_priv
> 
> Lukasz Majewski (18):
>    clk: doc: Add documentation entry for Common Clock Framework [CCF]
>      (i.MX)
>    dm: Fix documentation entry as there is no UCLASS_CLOCK uclass
>    clk: Remove clock ID check in .get_rate() of clk_fixed_*
>    clk: Extend struct clk to provide information regarding clock rate
>    clk: Extend struct clk to provide clock type agnostic flags
>    clk: Provide struct clk for fixed rate clock (clk_fixed_rate.c)
>    clk: Introduce clk-provider.h to store Common Clock Framework's
>      internals
>    dm: clk: Define clk_get_parent() for clk operations
>    dm: clk: Define clk_get_parent_rate() for clk operations
>    dm: clk: Define clk_get_by_id() for clk operations
>    clk: Port Linux common clock framework [CCF] for imx6q to U-boot (tag:
>      v5.1.12)
>    dm: clk: Extend clk_get_parent_rate() to support CLK_GET_RATE_NOCACHE
>      flag
>    dts: sandbox: Add 'osc' clock for Common Clock Framework [CCF] testing
>    clk: sandbox: Adjust clk-divider to emulate reading its value from HW
>    clk: sandbox: Adjust clk-mux.c to emulate reading divider value from
>      HW
>    clk: sandbox: Add sandbox test code for Common Clock Framework [CCF]
>    defconfig: sandbox: Enable SANDBOX_CLK_CCF to reuse generic CCF code
>    clk: Add MAINTAINERS entry for clocks (./drivers/clk/)
> 
>   MAINTAINERS                        |   7 ++
>   arch/sandbox/dts/test.dts          |  10 ++
>   configs/sandbox_defconfig          |   1 +
>   configs/sandbox_flattree_defconfig |   1 +
>   doc/imx/clk/ccf.txt                | 101 ++++++++++++++++++++
>   drivers/clk/Kconfig                |  22 +++++
>   drivers/clk/Makefile               |   3 +
>   drivers/clk/clk-divider.c          | 155 +++++++++++++++++++++++++++++++
>   drivers/clk/clk-fixed-factor.c     |  80 ++++++++++++++++
>   drivers/clk/clk-mux.c              | 172 ++++++++++++++++++++++++++++++++++
>   drivers/clk/clk-uclass.c           |  60 ++++++++++++
>   drivers/clk/clk.c                  |  57 ++++++++++++
>   drivers/clk/clk_fixed_factor.c     |   3 -
>   drivers/clk/clk_fixed_rate.c       |   8 +-
>   drivers/clk/clk_sandbox_ccf.c      | 185 +++++++++++++++++++++++++++++++++++++
>   drivers/clk/imx/Kconfig            |  16 ++++
>   drivers/clk/imx/Makefile           |   2 +
>   drivers/clk/imx/clk-gate2.c        | 103 +++++++++++++++++++++
>   drivers/clk/imx/clk-imx6q.c        | 179 +++++++++++++++++++++++++++++++++++
>   drivers/clk/imx/clk-pfd.c          |  90 ++++++++++++++++++
>   drivers/clk/imx/clk-pllv3.c        |  82 ++++++++++++++++
>   drivers/clk/imx/clk.h              |  69 ++++++++++++++
>   include/clk.h                      |  37 +++++++-
>   include/linux/clk-provider.h       | 132 ++++++++++++++++++++++++++
>   include/sandbox-clk.h              |  76 +++++++++++++++
>   test/dm/Makefile                   |   2 +-
>   test/dm/clk_ccf.c                  |  62 +++++++++++++
>   27 files changed, 1707 insertions(+), 8 deletions(-)
>   create mode 100644 doc/imx/clk/ccf.txt
>   create mode 100644 drivers/clk/clk-divider.c
>   create mode 100644 drivers/clk/clk-fixed-factor.c
>   create mode 100644 drivers/clk/clk-mux.c
>   create mode 100644 drivers/clk/clk.c
>   create mode 100644 drivers/clk/clk_sandbox_ccf.c
>   create mode 100644 drivers/clk/imx/clk-gate2.c
>   create mode 100644 drivers/clk/imx/clk-imx6q.c
>   create mode 100644 drivers/clk/imx/clk-pfd.c
>   create mode 100644 drivers/clk/imx/clk-pllv3.c
>   create mode 100644 drivers/clk/imx/clk.h
>   create mode 100644 include/linux/clk-provider.h
>   create mode 100644 include/sandbox-clk.h
>   create mode 100644 test/dm/clk_ccf.c
> 


More information about the U-Boot mailing list