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

Lukasz Majewski lukma at denx.de
Tue Jun 25 15:24:16 UTC 2019


Hi Frieder,

> 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.

The size increase for U-Boot proper is IMHO acceptable. The problem is
with SPL. I do think that the next step for SPL (when the code gets
accepted) would be to convert it to OF_PLATDATA (no need for DTS
parsing code as well as the description iself) and try to keep number
of necessary clocks low.

One issue with clocks is that we currently in u-boot by default strip
the clock properties. For CCF we need them, and as a result the DTS is
bigger.

> 
> 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.

v5 has several improvements/changes.

> 
> 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
> >  




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190625/3a7647bc/attachment.sig>


More information about the U-Boot mailing list