Skip to content

PRCM cleanup - remove prcm-regs.h

Paul Walmsley linux-omap 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest18 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/18omap2: add OMAP24XX and OMAP2/3 modules to prcm_common.harch/arm/mach-omap2/prcm_common.h+37 -00 replies
2/18omap2: add OMAP24XX register bit defines shared between CM and PRMarch/arm/mach-omap2/prcm_common.h+105 -00 replies
3/18omap2: add OMAP24XX Clock Management register definesarch/arm/mach-omap2/cm.h+94 -00 replies
4/18omap2: add Clock Management shared register bit defines to cm.harch/arm/mach-omap2/cm.h+15 -00 replies
5/18omap2: add OMAP24XX Power/Reset Management register definesarch/arm/mach-omap2/prm.h+119 -00 replies
6/18omap2: add Power/Reset Management shared register bit defines to prm.harch/arm/mach-omap2/prm.h+151 -00 replies
7/18omap2: add OMAP24XX Clock Management register bit definesarch/arm/mach-omap2/cm_regbits_24xx.h+398 -00 replies
8/18omap2: add OMAP24XX Power/Reset Management register bit definesarch/arm/mach-omap2/prm_regbits_24xx.h+279 -00 replies
9/18omap2: add PRM_BASE/CM_BASE #definesinclude/asm-arm/arch-omap/omap24xx.h+8 -00 replies
10/18omap2: convert pm.c to use new PRCM functions and symbolic constantsarch/arm/mach-omap2/pm.c+186 -2070 replies
11/18omap2: convert clock.c to use new PRCM functions and symbolic constantsarch/arm/mach-omap2/clock.c+161 -1080 replies
12/18omap2: convert prcm.c to use symbolic register & register bit constantsarch/arm/mach-omap2/prcm.c+6 -30 replies
13/18omap2: convert sram-fn.S to use {PRM, CM}_BASE rather than PRCM_BASEarch/arm/mach-omap2/sram-fn.S+6 -80 replies
14/18omap2: convert clock.h to use symbolic register definesarch/arm/mach-omap2/clock.h+125 -1220 replies
15/18omap2: convert clock.h to use symbolic register bit definesarch/arm/mach-omap2/clock.h+121 -1180 replies
16/18omap2: convert DSP code to use new PRCM functions & definesarch/arm/plat-omap/dsp/dsp_common.h arch/arm/plat-omap/dsp/omap2_dsp.h+29 -111 reply
17/18omap2: remove remaining prcm-regs.h includesarch/arm/mach-omap2/board-2430sdp.c arch/arm/mach-omap2/board-apollon.c arch/arm/mach-omap2/board-h4.c +1 more+0 -40 replies
18/18omap2: remove prcm-regs.harch/arm/mach-omap2/prcm-regs.h+0 -4720 replies

Reviews trailers per patch

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

Read the v1 thread

Cover letter [PATCH 00/18] PRCM cleanup - remove prcm-regs.h

These patches clean up PRCM register access in the OMAP2 tree. Highlights:

- PRCM registers are divided into module-shared registers and global registers. Module-shared registers can appear in multiple PRCM subsystems at identical address offsets, while global registers control system-wide PRCM functions and appear only once in PRCM space.

- PRCM registers are further separated into two categories, PRM (power/reset management) and CM (clock management) registers. This is to prepare for OMAP3430 PRCM code -- PRM and CM registers share the same address space on 2420 and 2430, but exist in separate address spaces on 3430.

- Read/write functions are defined for each of the combinations above:
prm_{read,write}_reg() for PRM global registers, prm_{read,write}_mod_reg() for PRM module-shared registers, cm_{read,write}_reg() for CM global registers,
cm_{read,write}_mod_reg() for CM module-shared registers. _reg()
functions use a single (void __iomem *) to refer to global registers, and _mod_reg() functions use both a module offset and a register offset to refer to module-shared registers. Almost all C-language PRCM register access in the mach-omap2/ directory is converted to use these functions. If debugging is enabled, all PRM/CM register writes will be logged to the console.

- Symbolic constants are defined for PRCM register addresses. Registers that are shared between architectures are simply defined as-is, e.g., 'CM_CLKSEL', but registers that only exist on specific architectures have the architecture name prepended, e.g., 'OMAP2430_CM_ICLKEN3'. This aids in identifying code that must be modified for cross-platform use. Existing C code is converted to use these new constants.

- Symbolic constants are also defined for PRCM register bits, and existing C code that used 'magic numbers' for these bits is converted to use the symbolic defines. This resulted in a major improvement in code readability. As above, bits shared between architectures are labeled with only their 'base name,' but architecture-specific bits have the architecture name prepended, making it easy to identify code that will need to be changed for new architectures.

An overview of this patch series:

- Patches 1-9 add constants for PRCM modules, 24xx PRM and CM registers, 24xx PRM and CM register bits, and the register read/write functions.

- Patches 10-17 convert existing code to use the PRCM framework introduced in patches 1-9.

- Patch 18 removes prcm-regs.h.

Comments welcome.

- Paul