Re: [PATCH v10 00/18] OMAP2,3: hwmod DSS Adaptation

Kevin Hilman
2011-01-24T21:58:05Z

Sumit Semwal <sumit.semwal@ti.com> writes:

> v10 of the patch series corrects return-error handling from platform_request_irq()
> based on comments from Sergei Shtylyov and Russell King.
> [https://patchwork.kernel.org/patch/497911/]

Tony,

Assuming Tomi is OK with this series, I think these are ready to go into
omap-testing for some broader testing.

Kevin

> v9 of this patch series adds reviewed-by and acked-by from Kevin Hilman.
>
> v8 of the DSS hwmod patch series fixes some issues based on findings of
> Kevin Hilman on beagle.
>
> The VENC platform driver was not getting registered due to missed device
> name update for vdda_dac regulator in some board files. This was moved from
> 'omap_display' device to 'omap_venc' device in patch 14/18.
>
> Also, similarly for DSI platform driver, the regulator name 'vdds_dsi' needs two
> instances - one for dpi, and one for dsi.
>
> This version corrects the above two for all board files where 'vdda_dac' and
> 'vdds_dsi' regulators are defined. [patches 14/18 and 15/18]
>
> Post this change, boot w/ visible framebuffer and tux was successfully validated
> on beagle, 3430SDP and zoom3.
>
> A patch mentioned in
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42384.html
> was needed to get OMAP3 to boot up on top of linux-next of 20110115.
>
> OMAP4 hwmod support will be posted after the acceptance of this basic change in
> the dss2 design.
>
> -------------------------------------------------
> [original patch introduction]
>
> This patch series decouples the "Clocks for DSS in hwmod adaptation" changes
> from this series. Another series would be posted which could be discussed
> w.r.t clocks in DSS across omap2,3.
>
> Removing the SYSCONFIG settings from DSS driver would also be part of these
> clock changes series and not covered in this series as it depends on some of
> the omap_hwmod framework changes w.r.t opt clocks handling.
>
> Summary of the hwmod DSS design:
> ================================
> DSS, DISPC, DSI, RFBI, VENC are made as platform drivers each
> corresponding to the hwmod class in the hwmod database.
>
> Each of these platform drivers' init / deinit are handled from core.c's
> omap_dss_probe() in the exact sequence as required.
>
> No Hardcoding of silicon data:
> hwmod database abstracts the SOC data like base addr, irq numbers and are
> implemented in this patch series.
>
> Continue to have custom bus for display panels:
> "omap_display" driver continues to be a platform driver that registers the custom
> bus. It also continues to register the display panels(omap_dss_device) on the
> board to the panel drivers (omap_dss_driver)
> For Eg: primary lcd device would be registered with lcd panel driver.
> lcd panel driver if it is on a parallel interface would use library functions
> exported from dpi.o. if it is on a dsi interface would use library functions
> exported from dsi platform driver(dsi.o).
>
> Clocks:
> Handling of clocks in DSS only is one of the design approaches, that does not
> change the existing implementation. If each of the DSS HW IPs had to handle
> their own clocks, then corresponding clock changes can be requested in the hwmod
> database as well which is not the current design/implementation. As stated,
> this would be handled in another series seperately.
> For Eg: VENC would need 54MCLK which is termed as dss_opt clocks as of now apart
> for the dss main clocks. Currently VENC driver needs to be aware of this and has to
> use clk_get/put, clk_enable/disable, since VENC hwmod is not aware of 54MCLK.
>
>
>
> Current dss driver:
> -------------------
> 1. Omapdss platform driver
> - initialises necessary Ips dss, dispc.
> - also initialises Ips like sdi, dsi, venc, rfbi
> - creates a custom bus and registers the display devices/drivers
> connected on the board to the custom bus.
>
> 2. Suspend/resume of omapdss
> - in turn sends suspend/resume calls for each of the display devices
> registered to it.
>
> Modified change:
> ---------------
> Platform driver for each DSS HW IP in addition to the software "omap_display"
> driver.
>
> Omapdss platform driver
> - initialises necessary h/w IPs' platform drivers [dss, dispc, dsi, venc, rfbi]
> and software libraries like dpi, sdi.
> - continues to have a custom bus and registers the display devices
> and drivers connected on the board to the custom bus.
> - continues to handle suspend/resume of the display devices registered
> to the custom bus.
>
> DSS platform driver
> - initialises DSS IP alone
> - Handles the clocks related to the DSS and other DSSHW IPs like RFBI,
> DSI, VENC, DISPC. Previously this was a part of "omapdss" driver in core.c
> - Continues to handle the DSS IRQs.
> - No suspend/resume hooks.
>
> DISPC platform driver
> - initialises DISPC IP alone
> - Gets the required clock from DSS platform driver.
> - No suspend/resume hooks.
> - Continues to provide DISPC library functions.
>
> DSI platform driver
> - initialises DSI IP alone
> - Gets the required clock from DSS platform driver.
> - No suspend/resume hooks.
> - Continues to provide DSI library functions.
>
> RFBI, VENC platform drivers
> - initialises DSI,VENC IPs
> - Gets the required clock from DSS platform driver.
> - No suspend/resume hooks.
> - Continues to provide RFBI and VENC library functions.
>
> Testing:
> ---------
> The patches are tested on 2420-n800, 2430sdp, 3630zoom, 3430sdp.
> Complete bootup with penguins on panel is done on 3430sdp.
> For the rest of the mentioned platforms, kernel is built with "OMAP2_DSS"
> and bootup is tested so that base address and clk_get calls are successful.
>
> DSS was built successfully as module, though not tested yet.
>
> Changes since v6:
> -----------------
> * board-zoom-peripherals.c: Added missing change of device name from omapdss to omap_display.
> Found during testing on OMAP3630 on top of
> Changes since v5:
> ----------------
> 1) Following review comments incorporated:
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42031.html
> Make sure display.c is built when DSS is enabled built-in or as a module.
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42083.html
> hwmod and omap_device headers moved to patch 8 when they're
> needed the first time.
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42094.html
> - latency set to AUTO_ADJUST
> - extra whitespaces removed.
> - pdata memset to 0 before use.
> - if omap_device_build fails, return error.
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42095.html
> renamed *_deinit_* to *_uninit_*
>
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42171.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42172.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42173.html
> - added L3 and L4 firewall related data,
> - corrected handling of .idlest_idle_bit v/w .idlest_stdby_bit
> - no .idlest_*_bit setting for dependent hwmods
> - corrected .user to add SDMA
> - renamed dss_dss to dss_core
> - hwmod for 3430es1 and later 3xxx are separated out, with some
> reuse of data.
> * Removed forced-disable of dss clocks from omap_dss_remove.
>
> Changes since v4:
> ----------------
> 1) Following review comments incorporated:
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41970.html
> Corrected the clocks to be enabled in omap_dss_probe.
> Changes since v3:
> ----------------
> 1.) Following review comments incorporated:
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41705.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41683.html
> Created a new display.c file for dss driver registration
> related code.
>
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41573.html
> Changed the oh_name/dev_name handling in hwmod usage.
>
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41753.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41718.html
> removed device_initcall_sync(); init / deinit of each DSS h/w IP
> platform drivers are done from omap_dss_probe() in sequence.
>
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41754.html
> clock patches were cleaned up as per review comments.
>
> * http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41756.html
> printk() => dev_dbg change was separated out.
>
>
> Changes since v2:
> -------------------
> 1.) Following review comments incorporated:
> Split the device/driver name change and registration patches logically.
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41205.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41204.html
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg41203.html
>
> Changes since v1:
> ------------------
> 1.) Dynamically register for OMAP2,3 specific DSS HW IPs in devices.c
> 2.) Following review comments incorporated:
> Updation of all the board files on l-o dss2 branch as per
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg36915.html
> Comments incorporated in devices.c and display.h as per
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg36919.html
> Comments incorporated in dispc.c, dss.c, dsi.c, venc.c, rfbi.c
> so that platform_device is just above platform_driver registrations as per
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg36963.html
> 3.) Squashed some of the patches to one patch.
>
> Changes since RFC:
> -------------------
> 1) All the platform driver registration except DSS, were within the file core.c.
> Registeration of these driver got seperated to its own file.
> 2) Usage of regulators by different drivers are implemented.
> For Eg: Regulator used by VENC is moved to venc driver. But vdda_dac would be
> needed by DPI and DSI as well.
> 4) OMAP2420 and OMAP2430 hwmod database are generated in this v1.
> 5) Module support for omapdss driver can continue as the DSS HW IP specific platform
> drivers are decoupled from omapdss driver.
> 6) Following review comments incorporated:
> Changed the hwmod device name from "dss" to "dss_dss"
> Changed name of core driver from "omapdss" to "omap_display" as it deals with panels.
> Fixed comments on return values from platform_get_resource/irq functions.
>
> Patch Base:
> ===========
> Patch-set rebased and tested w/ Zoom3 (OMAP3630) on top of:
> url = git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
> branch "master"
> commit e8883f8057c0f7c9950fa9f20568f37bfa62f34a
> Description: Add linux-next specific files for 20110115
> +
> Patch mentioned in http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42384.html
> [PATCH] OMAP: counter_32k: init clocksource as part of machine timer init
>
> (This patch is required for OMAP bootup w/ 20110115 linux-next)
>
> ----------------------------------------------------------------------------
>
> Senthilvadivu Guruswamy (15):
> OMAP2420: hwmod data: add DSS DISPC RFBI VENC
> OMAP2430: hwmod data: add DSS DISPC RFBI VENC
> OMAP3: hwmod data: add DSS DISPC RFBI DSI VENC
> OMAP2,3 DSS2 Change driver name to omap_display
> OMAP2,3 DSS2 Use Regulator init with driver name
> OMAP2,3: DSS2: board files: replace platform_device_register with
> omap_display_init()
> OMAP2,3: DSS2: Build omap_device for each DSS HWIP
> OMAP2,3: DSS2: DSS: create platform_driver, move init,exit to driver
> OMAP2,3: DSS2: Move clocks from core driver to dss driver
> OMAP2,3: DSS2: RFBI: create platform_driver, move init,exit to driver
> OMAP2,3: DSS2: DISPC: create platform_driver, move init,exit to
> driver
> OMAP2,3: DSS2: VENC: create platform_driver, move init,exit to driver
> OMAP2,3: DSS2: DSI: create platform_driver, move init,exit to driver
> OMAP2,3: DSS2: Use platform device to get baseaddr
> OMAP2,3: DSS2: Get DSS IRQ from platform device
>
> Sumit Semwal (3):
> OMAP2,3: DSS2: remove forced clk-disable from omap_dss_remove
> OMAP2,3: DSS2: Create new file display.c for central dss driver
> registration.
> OMAP2,3: DSS2: replace printk with dev_dbg in init
>
> arch/arm/mach-omap2/Makefile | 3 +
> arch/arm/mach-omap2/board-3430sdp.c | 26 +--
> arch/arm/mach-omap2/board-am3517evm.c | 16 +-
> arch/arm/mach-omap2/board-cm-t35.c | 22 +-
> arch/arm/mach-omap2/board-devkit8000.c | 22 +-
> arch/arm/mach-omap2/board-igep0020.c | 20 +-
> arch/arm/mach-omap2/board-omap3beagle.c | 22 +-
> arch/arm/mach-omap2/board-omap3evm.c | 30 +--
> arch/arm/mach-omap2/board-omap3pandora.c | 17 +-
> arch/arm/mach-omap2/board-omap3stalker.c | 26 +-
> arch/arm/mach-omap2/board-rx51-peripherals.c | 4 +-
> arch/arm/mach-omap2/board-rx51-video.c | 15 +-
> arch/arm/mach-omap2/board-zoom-display.c | 15 +-
> arch/arm/mach-omap2/board-zoom-peripherals.c | 12 +-
> arch/arm/mach-omap2/clock2420_data.c | 8 +-
> arch/arm/mach-omap2/clock2430_data.c | 8 +-
> arch/arm/mach-omap2/clock3xxx_data.c | 14 +-
> arch/arm/mach-omap2/display.c | 96 ++++++
> arch/arm/mach-omap2/omap_hwmod_2420_data.c | 311 ++++++++++++++++++-
> arch/arm/mach-omap2/omap_hwmod_2430_data.c | 284 ++++++++++++++++
> arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 433 +++++++++++++++++++++++++
> arch/arm/plat-omap/include/plat/display.h | 16 +
> arch/arm/plat-omap/include/plat/l3_2xxx.h | 20 ++
> arch/arm/plat-omap/include/plat/l3_3xxx.h | 20 ++
> arch/arm/plat-omap/include/plat/l4_2xxx.h | 24 ++
> arch/arm/plat-omap/include/plat/l4_3xxx.h | 10 +
> drivers/video/omap2/dss/core.c | 448 ++------------------------
> drivers/video/omap2/dss/dispc.c | 114 ++++---
> drivers/video/omap2/dss/dsi.c | 78 ++++-
> drivers/video/omap2/dss/dss.c | 419 +++++++++++++++++++++++-
> drivers/video/omap2/dss/dss.h | 46 ++--
> drivers/video/omap2/dss/rfbi.c | 118 ++++---
> drivers/video/omap2/dss/venc.c | 125 +++++---
> 33 files changed, 2055 insertions(+), 787 deletions(-)
> create mode 100644 arch/arm/mach-omap2/display.c
> create mode 100644 arch/arm/plat-omap/include/plat/l3_2xxx.h
> create mode 100644 arch/arm/plat-omap/include/plat/l3_3xxx.h
> create mode 100644 arch/arm/plat-omap/include/plat/l4_2xxx.h