Skip to content

OMAP clock: bug fixes, cleanup, optimization

Paul Walmsley linux-omap 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest23 patches 3 repliesIn review
  2. v122 patches 3 repliesSuperseded

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/23OMAP2/3 clock: use standard set_rate fn in omap2_clk_arch_init()arch/arm/mach-omap2/clock24xx.c arch/arm/mach-omap2/clock34xx.c+2 -20 replies
2/23OMAP clock: move rate recalc, propagation code up to plat-omap/clock.carch/arm/mach-omap1/clock.c arch/arm/mach-omap2/clock.c arch/arm/mach-omap2/clock24xx.c +2 more+27 -480 replies
3/23OMAP2/3 clock: drop recalc function pointers from fixed rate clocksarch/arm/mach-omap2/clock24xx.h arch/arm/mach-omap2/clock34xx.h arch/arm/plat-omap/clock.c+10 -220 replies
4/23OMAP clock: support "dry run" rate and parent changesarch/arm/mach-omap1/clock.c arch/arm/mach-omap1/clock.h arch/arm/mach-omap2/clock.c +7 more+277 -1080 replies
5/23OMAP clock: track child clocksarch/arm/mach-omap2/clock.c arch/arm/plat-omap/clock.c arch/arm/plat-omap/include/mach/clock.h+199 -480 replies
6/23OMAP clock: drop the RATE_PROPAGATES flagarch/arm/mach-omap1/clock.h arch/arm/mach-omap2/clock24xx.h arch/arm/mach-omap2/clock34xx.h +1 more+104 -1640 replies
7/23OMAP clock: drop RATE_FIXEDarch/arm/mach-omap1/clock.c arch/arm/mach-omap1/clock.h arch/arm/mach-omap2/clock.c +3 more+29 -380 replies
8/23OMAP clock: remove VIRTUAL_CLOCKarch/arm/mach-omap1/clock.h arch/arm/mach-omap2/clock24xx.h arch/arm/plat-omap/include/mach/clock.h+6 -102 replies
9/23OMAP2 clock: drop CONFIG_PARTICIPANT clock flagarch/arm/mach-omap2/clock.c arch/arm/mach-omap2/clock24xx.h arch/arm/plat-omap/include/mach/clock.h+12 -400 replies
10/23OMAP2/3 clock: remove clk->ownerarch/arm/plat-omap/clock.c arch/arm/plat-omap/include/mach/clock.h+2 -60 replies
11/23OMAP clock: rearrange clock.h structure orderarch/arm/plat-omap/include/mach/clock.h+15 -150 replies
12/23OMAP2/3 clock: don't use a barrier after clk_disable()arch/arm/mach-omap2/clock.c+1 -10 replies
13/23OMAP2xxx clock: consolidate DELAYED_APP clock commits; fix barrierarch/arm/mach-omap2/clock.c+24 -100 replies
14/23OMAP2/3 clock: convert remaining MPU barriers into OCP barriersarch/arm/mach-omap2/clock.c+3 -40 replies
15/23OMAP clock: drop clk_get_usecount()arch/arm/mach-omap2/pm-debug.c arch/arm/mach-omap2/pm24xx.c arch/arm/plat-omap/clock.c +1 more+2 -190 replies
16/23OMAP clock: add OMAP chip family-specific clk_register() optionarch/arm/mach-omap2/clock.c arch/arm/mach-omap2/clock.h arch/arm/mach-omap2/clock24xx.c +3 more+21 -60 replies
17/23OMAP2/3 clock: every clock must have a clkdmarch/arm/mach-omap2/clock.c+9 -110 replies
18/23OMAP2/3 clock: omap2_clk_enable(): refactor usecount checkarch/arm/mach-omap2/clock.c+16 -150 replies
19/23OMAP2/3 clock: omap2_clk_enable(): fix bugs in clockdomain handlingarch/arm/mach-omap2/clock.c+3 -20 replies
20/23OMAP2/3 clock: omap2_clk_enable(): fix usecount decrement bugarch/arm/mach-omap2/clock.c+2 -41 reply
21/23OMAP2/3 clock: omap2_clk_enable(): fix logicarch/arm/mach-omap2/clock.c+10 -70 replies
22/23OMAP2/3 clock: don't tinker with hardirqs when they are supposed to be disabledarch/arm/mach-omap2/clock24xx.c arch/arm/mach-omap2/clock34xx.c+3 -110 replies
23/23OMAP3 SmartReflex: get rid of custom clocksarch/arm/mach-omap2/smartreflex.c+19 -700 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [PATCH v2 00/23] OMAP clock: bug fixes, cleanup, optimization

Hello,

This is version 2 of the clock updates series sent earlier. Changes in v2:

1. Missing structure documentation for struct clk_child added

2. .clk_register function pointer added to struct clk_functions; OMAP2/3 clock code now does clock->clockdomain association there

Revised summary below. Happy new year, everyone.

- Paul

------------------

Hello,

this 23-patch series updates the OMAP1/2/3 clock code. Highlights:

- Rate recalculation functions are now no longer responsible for rate propagation - now handled by plat-omap/clock.c (patches 2, 3,
4)

- Parent-to-child traversals of the clock tree are now much faster - these occur during rate propagation and clock notifiers (patch 5)

- Many superfluous clock flags have been dropped (patches 6, 7, 8, 9)

- struct clk has been streamlined by removing unused members and rearranging the structure to reduce padding (patches 10, 11)

- MPU barriers have been either removed or converted to OCP barriers (patches 12, 13, 14)

- clk_get_usecount() has been dropped (patch 15)

- OMAP clock code can now specify an OMAP chip family-specific clk_enable() function - used on OMAP2/3 (patch 16)

- omap2_clk_enable() has been overhauled: two bugs were fixed and the function body itself is now understandable (patches 17, 18, 19, 20, 21)

- Unnecessary custom clocks in smartreflex.c have been removed (patch 23)

- Miscellaneous bug fixes (patches 1, 22)

Compile-tested on OMAP1. Boot-tested on N800 and 3430SDP GP ES2.1.

---

size:
text data bss dec hex filename

3596322  192368  109912 3898602  3b7cea vmlinux.3430sdp.orig
3595941  193016  109912 3898869  3b7df5 vmlinux.3430sdp.patched
3167222  152232   86176 3405630  33f73e vmlinux.n800.orig
3167501  152792   86176 3406469  33fa85 vmlinux.n800.patched
2682806  120120   96940 2899866  2c3f9a vmlinux.osk5912.orig
2683397  120528   96940 2900865  2c4381 vmlinux.osk5912.patched

diffstat:

 arch/arm/mach-omap1/clock.c             |   87 +++++++----
 arch/arm/mach-omap1/clock.h             |   64 ++++----
 arch/arm/mach-omap2/clock.c             |  167 +++++++++++---------
 arch/arm/mach-omap2/clock.h             |    9 +
 arch/arm/mach-omap2/clock24xx.c         |  128 ++++++++++------
 arch/arm/mach-omap2/clock24xx.h         |   89 ++++-------
 arch/arm/mach-omap2/clock34xx.c         |   52 +++---
 arch/arm/mach-omap2/clock34xx.h         |  228 ++++++++++------------------
 arch/arm/mach-omap2/pm-debug.c          |    2 
 arch/arm/mach-omap2/pm24xx.c            |    2 
 arch/arm/mach-omap2/smartreflex.c       |   89 ++---------
 arch/arm/plat-omap/clock.c              |  256 +++++++++++++++++++++++++------
 arch/arm/plat-omap/include/mach/clock.h |   78 ++++++---
 13 files changed, 693 insertions(+), 558 deletions(-)

manifest:
Paul Walmsley (20):
OMAP3 SmartReflex: get rid of custom clocks
OMAP2/3 clock: don't tinker with hardirqs when they are supposed to be disabled OMAP2/3 clock: omap2_clk_enable(): fix logic
OMAP2/3 clock: omap2_clk_enable(): fix usecount decrement bug OMAP2/3 clock: omap2_clk_enable(): fix bugs in clockdomain handling OMAP2/3 clock: omap2_clk_enable(): refactor usecount check OMAP2/3 clock: every clock must have a clkdm
OMAP clock: add OMAP chip family-specific clk_register() option OMAP clock: drop clk_get_usecount()
OMAP2/3 clock: convert remaining MPU barriers into OCP barriers OMAP2xxx clock: consolidate DELAYED_APP clock commits; fix barrier OMAP2/3 clock: don't use a barrier after clk_disable()
OMAP2 clock: drop CONFIG_PARTICIPANT clock flag
OMAP clock: drop RATE_FIXED
OMAP clock: drop the RATE_PROPAGATES flag
OMAP clock: track child clocks
OMAP clock: support "dry run" rate and parent changes
OMAP2/3 clock: drop recalc function pointers from fixed rate clocks OMAP clock: move rate recalc, propagation code up to plat-omap/clock.c OMAP2/3 clock: use standard set_rate fn in omap2_clk_arch_init()

Russell King (3):
OMAP clock: rearrange clock.h structure order OMAP2/3 clock: remove clk->owner
OMAP clock: remove VIRTUAL_CLOCK