mbox series

[v4,0/9] Rewrite clk parent handling

Message ID 20190412183150.102131-1-sboyd@kernel.org (mailing list archive)
Headers show
Series Rewrite clk parent handling | expand

Message

Stephen Boyd April 12, 2019, 6:31 p.m. UTC
There are a couple warts with clk parent handling in the common clk
framework. This patch series addresses one of those warts, parent-child
linkages. We use strings for all parent-child linkages, and this leads
to poorly written code that extracts clk names from struct clk pointers
and makes clk provider drivers use clk consumer APIs. I've converted the
fixed factor clk and I'm looking at converting users of other "basic"
clk types in follow-up patches so we can start moving drivers away from
string matching in the clk namespace.

Changes from v3:
 * Split clkdev patch into two
 * New patch to let dev_of_node() accept NULL
 * Use dev_of_node() in of_clk_hw_register() to avoid NULL deref

Changes from v2:
 * Dropped patches that got merged into v5.1-rc1
 * Introduced a new function of_clk_hw_register()
 * Introduced 'index' into clk_parent_data structure 
 * Converted fixed-factor basic type to new design
 * Fixed some bugs in a recent patch to clkdev, leading to
   an essential API for clkdev based lookups working

Changes from v1:
 * Dropped new get_parent_hw, we'll pick it up in a later series
 * Rebased to v5.0-rc6 to avoid conflicts with clk-fixes
 * Renamed 'fallback' to 'name' and 'name' to 'fw_name' in parent map
 * Made sure that clk_hw_get_parent_by_index() never sees an error pointer
   so that we don't mistakenly try to defer an error pointer
 * Fixed index passing mistake on of_clk_get_hw_from_clkspec()
 * Copy over all the data from parent maps and free it correctly too

Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jeffrey Hugo <jhugo@codeaurora.org>
Cc: Jerome Brunet <jbrunet@baylibre.com>
Cc: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>

Stephen Boyd (9):
  clkdev: Hold clocks_mutex while iterating clocks list
  clkdev: Move clk creation outside of 'clocks_mutex'
  clk: Prepare for clk registration API that uses DT nodes
  driver core: Let dev_of_node() accept a NULL dev
  clk: Add of_clk_hw_register() API for early clk drivers
  clk: Allow parents to be specified without string names
  clk: Look for parents with clkdev based clk_lookups
  clk: Allow parents to be specified via clkspec index
  clk: fixed-factor: Let clk framework find parent

 drivers/clk/clk-fixed-factor.c |  53 ++++--
 drivers/clk/clk.c              | 326 +++++++++++++++++++++++++--------
 drivers/clk/clk.h              |   2 +
 drivers/clk/clkdev.c           |  30 +--
 include/linux/clk-provider.h   |  22 +++
 include/linux/device.h         |   2 +-
 6 files changed, 327 insertions(+), 108 deletions(-)


base-commit: 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b

Comments

Jeffrey Hugo April 15, 2019, 6:05 p.m. UTC | #1
On 4/12/2019 12:31 PM, Stephen Boyd wrote:
> There are a couple warts with clk parent handling in the common clk
> framework. This patch series addresses one of those warts, parent-child
> linkages. We use strings for all parent-child linkages, and this leads
> to poorly written code that extracts clk names from struct clk pointers
> and makes clk provider drivers use clk consumer APIs. I've converted the
> fixed factor clk and I'm looking at converting users of other "basic"
> clk types in follow-up patches so we can start moving drivers away from
> string matching in the clk namespace.
> 
> Changes from v3:
>   * Split clkdev patch into two
>   * New patch to let dev_of_node() accept NULL
>   * Use dev_of_node() in of_clk_hw_register() to avoid NULL deref
> 
> Changes from v2:
>   * Dropped patches that got merged into v5.1-rc1
>   * Introduced a new function of_clk_hw_register()
>   * Introduced 'index' into clk_parent_data structure
>   * Converted fixed-factor basic type to new design
>   * Fixed some bugs in a recent patch to clkdev, leading to
>     an essential API for clkdev based lookups working
> 
> Changes from v1:
>   * Dropped new get_parent_hw, we'll pick it up in a later series
>   * Rebased to v5.0-rc6 to avoid conflicts with clk-fixes
>   * Renamed 'fallback' to 'name' and 'name' to 'fw_name' in parent map
>   * Made sure that clk_hw_get_parent_by_index() never sees an error pointer
>     so that we don't mistakenly try to defer an error pointer
>   * Fixed index passing mistake on of_clk_get_hw_from_clkspec()
>   * Copy over all the data from parent maps and free it correctly too
> 
> Cc: Chen-Yu Tsai <wens@csie.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Jeffrey Hugo <jhugo@codeaurora.org>
> Cc: Jerome Brunet <jbrunet@baylibre.com>
> Cc: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Miquel Raynal <miquel.raynal@bootlin.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Russell King <linux@armlinux.org.uk>
> 
> Stephen Boyd (9):
>    clkdev: Hold clocks_mutex while iterating clocks list
>    clkdev: Move clk creation outside of 'clocks_mutex'
>    clk: Prepare for clk registration API that uses DT nodes
>    driver core: Let dev_of_node() accept a NULL dev
>    clk: Add of_clk_hw_register() API for early clk drivers
>    clk: Allow parents to be specified without string names
>    clk: Look for parents with clkdev based clk_lookups
>    clk: Allow parents to be specified via clkspec index
>    clk: fixed-factor: Let clk framework find parent
> 
>   drivers/clk/clk-fixed-factor.c |  53 ++++--
>   drivers/clk/clk.c              | 326 +++++++++++++++++++++++++--------
>   drivers/clk/clk.h              |   2 +
>   drivers/clk/clkdev.c           |  30 +--
>   include/linux/clk-provider.h   |  22 +++
>   include/linux/device.h         |   2 +-
>   6 files changed, 327 insertions(+), 108 deletions(-)
> 
> 
> base-commit: 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b
> 

Tested-by: Jeffrey Hugo <jhugo@codeaurora.org>