On Mon, Sep 8, 2014 at 4:43 AM, Boris BREZILLON <boris.brezillon@xxxxxxxxxxxxxxxxxx> wrote: > Hello, > > This patch series adds support for Atmel HLCDC (HLCD Controller) available > on some Atmel SoCs (i.e. the sama5d3 family). > > The HLCDC actually provides a Display Controller and a PWM device, hence I > decided to declare an MFD device exposing 2 subdevices: a display > controller and a PWM chip. > This also solves a circular dependency issue preventing HLCDC driver from > unloading. > The HLCDC request a drm_panel device, which request a backlight device > (a PWM backlight), which depends on a PWM which is provided by the HLCDC > driver (hlcdc -> panel -> backlight -> hlcdc (pwm part)). > > The current implementation only supports sama5d3 SoCs but other SoCs should > be easily ported by defining new compatible strings and adding HLCDC > description structures for these SoCs (Ludovic tested this driver on an > at91sam9x5 board). > > The drivers supports basic CRTC functionalities, several overlays and an > hardware cursor. > > At the moment, it only supports connection to LCD panels through an RGB > connector (defined as an LVDS connector in my implementation), though > connection to other kind of devices (like DRM bridges) could be added later. > > It also supports several RGB formats on all planes and some YUV formats on > the HEO overlay plane. > > This series depends those series: [1] and [2]. > > I know you're all quite busy, but I was expecting to get support for > atmel's HLCDC block in 3.18, and given the lack of review I got on the > DRM and PWM parts I doubt it can happen :-(. > > Moreover, the dependencies ([1] and [2]) are stuck too. > The first one has been reviewed by Rob, but didn't get any feedback after > that. David, Rob, is there anything blocking this series ? > The second patch series contains some rework I've done to describe the > transfer format used on a connector bus. Laurent, Thierry, you're the one > who suggested this rework. Could you give your opinion on my > implementation ? hmm, looks like I still owe you a review after conversion to flip-work helpers.. Sorry, I thought I'd already reviewed one of the later versions. It is on my list for tomorrow. Definitely we should get the flip-work helper patches landed, that part already has my r-b BR, -R > Best Regards, > > Boris > > [1]http://lkml.iu.edu/hypermail/linux/kernel/1407.1/04171.html > [2]http://www.spinics.net/lists/kernel/msg1791681.html > > Changes since v4: > - fix a few more bugs in rotation handling (rotation was buggy on some > formats) > - return connector_status_unknown until a panel is exposed by the > drm_panel infrastructure (prevent fbdev creation until everyting is > in place) > - rework Kconfig MFD_ATMEL_HLCDC selection to simplify the configuration > (automatically select this option when selecting the HLCDC PMW or DRM > driver, instead of depending on this option) > > Changes since v3: > - rework the layer code to simplify several parts (locking and layer > disabling) > - make use of the drm_flip_work infrastructure > - rely on default HW cursor implementation using on the cursor plane > - rework the display controller DT bindings (based on OF graph > representation) > - add rotation support > - retrive RGB bus format from drm_display_info > - drop the dynamic pinctrl state selection > - rework HLCDC output handling (previously specialized to interface > with LCD panels) > - drop ".module = THIS_MODULE" lines > - change display controller compatible string > > Changes since v2: > - fix coding style issues (macro indentation) > - make use of GENMASK in several places > - declare regmap config as a static structure > - rework hlcdc plane update API > - rework cursor handling to make use of the new plane update API > - fix backporch config > - do not use devm_regmap_init_mmio_clk to avoid extra clk_enable > clk disable calls when accessing registers > - explicitely include regmap and clk headers instead of relying on > atmel-hlcdc.h inclusions > - make the atmel-hlcdc driver depends on CONFIG_OF > - separate DT bindings documentation from driver implementation > - support several pin muxing for HLCDC pins on sama5d3 SoCs > > Changes since v1: > - replace the backlight driver by a PWM driver > - make use of drm_panel infrastructure > - split driver code in several subsystem: MFD, PWM and DRM > - add support for overlays > - add support for hardware cursor > > Boris BREZILLON (11): > mfd: add atmel-hlcdc driver > mfd: add documentation for atmel-hlcdc DT bindings > pwm: add support for atmel-hlcdc-pwm device > pwm: add DT bindings documentation for atmel-hlcdc-pwm driver > drm: add Atmel HLCDC Display Controller support > drm: add DT bindings documentation for atmel-hlcdc-dc driver > ARM: AT91/dt: split sama5d3 lcd pin definitions to match RGB mode > configs > ARM: AT91/dt: add alternative pin muxing for sama5d3 lcd pins > ARM: at91/dt: define the HLCDC node available on sama5d3 SoCs > ARM: at91/dt: add LCD panel description to sama5d3xdm.dtsi > ARM: at91/dt: enable the LCD panel on sama5d3xek boards > > .../devicetree/bindings/drm/atmel-hlcdc-dc.txt | 54 ++ > .../devicetree/bindings/mfd/atmel-hlcdc.txt | 50 ++ > .../devicetree/bindings/pwm/atmel-hlcdc-pwm.txt | 55 ++ > arch/arm/boot/dts/sama5d31ek.dts | 20 + > arch/arm/boot/dts/sama5d33ek.dts | 20 + > arch/arm/boot/dts/sama5d34ek.dts | 20 + > arch/arm/boot/dts/sama5d36ek.dts | 20 + > arch/arm/boot/dts/sama5d3_lcd.dtsi | 205 ++++- > arch/arm/boot/dts/sama5d3xdm.dtsi | 58 ++ > drivers/gpu/drm/Kconfig | 2 + > drivers/gpu/drm/Makefile | 1 + > drivers/gpu/drm/atmel-hlcdc/Kconfig | 13 + > drivers/gpu/drm/atmel-hlcdc/Makefile | 7 + > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 286 +++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 488 ++++++++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 224 ++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c | 656 ++++++++++++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.h | 403 ++++++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 476 ++++++++++++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 836 +++++++++++++++++++++ > drivers/mfd/Kconfig | 6 + > drivers/mfd/Makefile | 1 + > drivers/mfd/atmel-hlcdc.c | 118 +++ > drivers/pwm/Kconfig | 10 + > drivers/pwm/Makefile | 1 + > drivers/pwm/pwm-atmel-hlcdc.c | 229 ++++++ > include/linux/mfd/atmel-hlcdc.h | 78 ++ > 27 files changed, 4306 insertions(+), 31 deletions(-) > create mode 100644 Documentation/devicetree/bindings/drm/atmel-hlcdc-dc.txt > create mode 100644 Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt > create mode 100644 Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.txt > create mode 100644 drivers/gpu/drm/atmel-hlcdc/Kconfig > create mode 100644 drivers/gpu/drm/atmel-hlcdc/Makefile > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.c > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_layer.h > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c > create mode 100644 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > create mode 100644 drivers/mfd/atmel-hlcdc.c > create mode 100644 drivers/pwm/pwm-atmel-hlcdc.c > create mode 100644 include/linux/mfd/atmel-hlcdc.h -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html