[RFC PATCH 00/11] OMAP System Control Module

Eduardo Valentin eduardo.valentin at ti.com
Fri May 25 04:25:50 EDT 2012


Hello Paul and Tony,

This is a series of patches adding a basic support for system control module,
on OMAP4+ context. It is a working in progress, but I wanted to share already
to get your feedback.

I've modeled the driver as an MFD. You will see in this series:
. A rework of the system control module header (patch from Santosh, picked from the list)
. Device creation for control module core
. Early device creation for control module core
. The MFD core driver for system control module
. The MFD child for usb-phy pin control
. The MFD child for bandgap sensor
. Very early exposure of OMAP4 thermal zone
. All added drivers are only supporting DT probing
. The series is based on linux-omap master, as it has the hwmod entries for SCM.

The overall idea of this series is to put in place the infrastructure. It is
not touching nor removing the existing APIs under mach-omap2/control.c for now.
But the target is to have these APIs moved to the MFD core driver.

For early access, like ID checking, I have written the platform driver
as an early platform driver and you will see also early device addition
and probing under device.c for this case. This is of course a proposal.
I see that there are people that thing this is a bit of an overkill.
Konstantin (CCd) was proposing a simpler solution by having
APIs with early_* prefixes, and solve the IO address mapping with
a DT entry, for instance. But feel free to propose better ways.

This code has been ripped off from the Android 3.1 branch. I have rewritten
a couple of things, but the major driver functions and API's entries are kept.

So, based on this series, I see as a TODO list, for system control core driver:
- Start to move all the existing APIs under mach-omap2/control.c to the mfd core.
- Rewrite the users of the existing APIs, mentioned on previous item
Once we decide the API and agree on how to deal with early calls.
- Add remaining children (from top of my head, the CAM is one of them,
but I also think we should prob have one for HWOBS for instance)
- Test on boards that use the existing APIs.

TODO list for bandgap driver:
- Improve thermal zone definition for OMAP4
- Introduce the thermal zones for OMAP5

Amit, due to hwmod dep, I didn't include any cooling binding in this series,
based on the generic CPU cooling device.

Overall series has been tested only with panda board OMAP4460.

Your comments are welcome.

All best,

Eduardo Valentin (9):
  ARM: OMAP: expose control.h to mach area
  OMAP: Add early device for system control module
  mfd: omap: control: core system control driver
  OMAP2+: use control module mfd driver in omap_type
  mfd: omap: control: usb-phy: introduce the ctrl-module usb driver
  ARM: OMAP4+: Adding the temperature sensor register set bit fields
  ARM: OMAP4+: thermal: introduce bandgap temperature sensor
  omap4: thermal: add basic CPU thermal zone
  ARM: DT: Add support to system control module for OMAP4

Kishon Vijay Abraham I (1):
  arm: omap: device: create a device for system control module

Santosh Shilimkar (1):
  ARM: OMAP4: Remove un-used control module headers and defines.

 .../devicetree/bindings/mfd/omap_control.txt       |   44 +
 .../devicetree/bindings/thermal/omap_bandgap.txt   |   27 +
 arch/arm/boot/dts/omap4.dtsi                       |   13 +
 arch/arm/mach-omap2/Kconfig                        |    1 +
 arch/arm/mach-omap2/am35xx-emac.c                  |    2 +-
 arch/arm/mach-omap2/board-3430sdp.c                |    2 +-
 arch/arm/mach-omap2/board-4430sdp.c                |    2 +-
 arch/arm/mach-omap2/board-am3517crane.c            |    2 +-
 arch/arm/mach-omap2/board-am3517evm.c              |    2 +-
 arch/arm/mach-omap2/board-apollon.c                |    2 +-
 arch/arm/mach-omap2/board-cm-t3517.c               |    2 +-
 arch/arm/mach-omap2/board-h4.c                     |    2 +-
 arch/arm/mach-omap2/board-igep0020.c               |    2 +-
 arch/arm/mach-omap2/board-ldp.c                    |    2 +-
 arch/arm/mach-omap2/board-omap3logic.c             |    2 +-
 arch/arm/mach-omap2/board-omap4panda.c             |    2 +-
 arch/arm/mach-omap2/board-omap4pcm049.c            |    2 +-
 arch/arm/mach-omap2/clock2420_data.c               |    2 +-
 arch/arm/mach-omap2/clock2430_data.c               |    2 +-
 arch/arm/mach-omap2/clock3xxx_data.c               |    2 +-
 arch/arm/mach-omap2/clock44xx_data.c               |    2 +-
 arch/arm/mach-omap2/common.c                       |    2 +-
 arch/arm/mach-omap2/control.c                      |    2 +-
 arch/arm/mach-omap2/cpuidle34xx.c                  |    2 +-
 arch/arm/mach-omap2/devices.c                      |   57 +-
 arch/arm/mach-omap2/display.c                      |    2 +-
 arch/arm/mach-omap2/hsmmc.c                        |    2 +-
 arch/arm/mach-omap2/id.c                           |   18 +-
 arch/arm/mach-omap2/{ => include/mach}/control.h   |  163 ++-
 .../include/mach/ctrl_module_core_44xx.h           |  391 -----
 .../include/mach/ctrl_module_pad_core_44xx.h       | 1409 -----------------
 .../include/mach/ctrl_module_pad_wkup_44xx.h       |  236 ---
 .../include/mach/ctrl_module_wkup_44xx.h           |   92 --
 arch/arm/mach-omap2/mcbsp.c                        |    2 +-
 arch/arm/mach-omap2/mux.c                          |    2 +-
 arch/arm/mach-omap2/omap_phy_internal.c            |    2 +-
 arch/arm/mach-omap2/opp3xxx_data.c                 |    2 +-
 arch/arm/mach-omap2/opp4xxx_data.c                 |    2 +-
 arch/arm/mach-omap2/pm24xx.c                       |    2 +-
 arch/arm/mach-omap2/pm34xx.c                       |    2 +-
 arch/arm/mach-omap2/prcm.c                         |    2 +-
 arch/arm/mach-omap2/serial.c                       |    2 +-
 arch/arm/mach-omap2/sleep34xx.S                    |    2 +-
 arch/arm/mach-omap2/sr_device.c                    |    2 +-
 arch/arm/mach-omap2/usb-fs.c                       |    2 +-
 arch/arm/mach-omap2/voltage.c                      |    2 +-
 arch/arm/plat-omap/Kconfig                         |    3 +
 drivers/mfd/Kconfig                                |    9 +
 drivers/mfd/Makefile                               |    1 +
 drivers/mfd/omap-control-core.c                    |  211 +++
 drivers/thermal/Kconfig                            |   25 +
 drivers/thermal/Makefile                           |    5 +-
 drivers/thermal/omap-bandgap.c                     | 1602 ++++++++++++++++++++
 drivers/thermal/omap-bandgap.h                     |   75 +
 drivers/thermal/omap4-thermal.c                    |   72 +
 drivers/usb/otg/Kconfig                            |   13 +
 drivers/usb/otg/Makefile                           |    1 +
 drivers/usb/otg/omap4-usb-phy.c                    |  130 ++
 include/linux/mfd/omap_control.h                   |   69 +
 include/linux/usb/omap4_usb_phy.h                  |   53 +
 60 files changed, 2617 insertions(+), 2173 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/omap_control.txt
 create mode 100644 Documentation/devicetree/bindings/thermal/omap_bandgap.txt
 rename arch/arm/mach-omap2/{ => include/mach}/control.h (75%)
 delete mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_core_44xx.h
 delete mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_pad_core_44xx.h
 delete mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_pad_wkup_44xx.h
 delete mode 100644 arch/arm/mach-omap2/include/mach/ctrl_module_wkup_44xx.h
 create mode 100644 drivers/mfd/omap-control-core.c
 create mode 100644 drivers/thermal/omap-bandgap.c
 create mode 100644 drivers/thermal/omap-bandgap.h
 create mode 100644 drivers/thermal/omap4-thermal.c
 create mode 100644 drivers/usb/otg/omap4-usb-phy.c
 create mode 100644 include/linux/mfd/omap_control.h
 create mode 100644 include/linux/usb/omap4_usb_phy.h

-- 
1.7.7.1.488.ge8e1c




More information about the linux-arm-kernel mailing list