drm/tilcdc: LCD panels clocks initialization and earlier backlight initialization

Rob Clark robdclark at gmail.com
Wed Apr 3 00:59:54 EST 2013


On Tue, Apr 2, 2013 at 4:45 AM, Michal Bachraty
<michal.bachraty at streamunlimited.com> wrote:
> Hi Rob,
>
> On Monday, April 01, 2013 09:46:05 Rob Clark wrote:
>> On Mon, Apr 1, 2013 at 7:31 AM, Hiremath, Vaibhav <hvaibhav at ti.com> wrote:
>> >> -----Original Message-----
>> >> From: devicetree-discuss [mailto:devicetree-discuss-
>> >> bounces+hvaibhav=ti.com at lists.ozlabs.org] On Behalf Of Michal Bachraty
>> >> Sent: Thursday, March 28, 2013 11:02 PM
>> >> To: dri-devel at lists.freedesktop.org; devicetree-
>> >> discuss at lists.ozlabs.org
>> >> Cc: robdclark at gmail.com; koen at dominion.thruhere.net
>> >> Subject: drm/tilcdc: LCD panels clocks initialization and earlier
>> >> backlight initialization
>> >>
>> >> Hi,
>> >>
>> >> I'm trying to use tilcdc driver for KWH050TG08 LCD panel connected to
>> >> AM335x
>> >> processor (3.9 rc1 kernel). I have prepared DT bindings for that
>> >> (listed
>> >> bellow). I see fb0 device but I have no clocks going from cpu to LCD.
>> >> My
>> >> clocks for LCD seems not properly to be set ...
>> >>
>> >> virt_25000000_ck               1           1            25000000
>> >>
>> >>     sys_clkin_ck                8           19           25000000
>> >>
>> >>        dpll_disp_ck             0           1            25000000
>> >>
>> >>           dpll_disp_m2_ck       0           1            25000000
>> >>
>> >>              lcd_gclk           0           1            25000000
>> >>
>> >> and tilcdc_crtc is not called. I also set lcd_gclk to 300MHz, but I got
>> >> same
>> >> result. The question is there any way how to properly set clocks for
>> >> LCD?
>> >
>> > Not sure  about the LCDC DRM driver, but I just tested clk_set_rate()
>> > For lcdc_gclk clock and it is working for me. I could able to set
>> > 300MHz freq on my BeagleBone platform, with below code -
>>
>> fwiw, tilcdc drm driver won't set clocks until you do modeset, as it
>> is setting them based on the requested pixel clock.  As opposed to
>> setting it once at boot time.
>>
>> Michal, you may want to add 'drm.debug=7' in your bootargs, and send
>> the bootlog.  That should set some light about whether it is even
>> trying to modeset but failing, or some other issue.
>>
>
> Yes, here it is:

Hmm, looks like tilcdc_crtc_update_clk() is not getting called.. and
in fact either tilcdc_crtc_mode_set() is not called or bails out early
(maybe _mode_valid() falis?)

I'd perhaps throw a few traces in tilcdc_crtc_mode_set() and see why
that is bailing out..

BR,
-R


>
> [    3.098732] platform audio.11: Driver snd-soc-am33xx-s800 requests probe
> deferral
> [ 3.107280] TCP: cubic registered
> [    3.110822] Initializing XFRM netlink socket
> [    3.115844] NET: Registered protocol family 10
> [    3.123212] NET: Registered protocol family 17
> [    3.128064] NET: Registered protocol family 15
> [    3.133176] Key type dns_resolver registered
> [    3.137846] VFP support v0.3: implementor 41 architecture 3 part 30 variant
> c rev 3
> [    3.146087] ThumbEE CPU extension supported.
> [    3.150659] Registering SWP/SWPB emulation handler
> [    3.160695] registered taskstats version 1
> [    3.166007] [drm:tilcdc_drm_init], init
> [    3.171117] pinctrl core: add 1 pinmux maps
> [    3.175564] pinctrl-single 44e10800.pinmux: found group selector 6 for
> pinmux_lcd_pins
> [    3.183957] pinctrl-single 44e10800.pinmux: request pin 59 (44e108ec) for
> lcd_panel.15
> [    3.192312] pinctrl-single 44e10800.pinmux: request pin 57 (44e108e4) for
> lcd_panel.15
> [    3.200662] pinctrl-single 44e10800.pinmux: request pin 56 (44e108e0) for
> lcd_panel.15
> [    3.209010] pinctrl-single 44e10800.pinmux: request pin 58 (44e108e8) for
> lcd_panel.15
> [    3.217321] pinctrl-single 44e10800.pinmux: request pin 55 (44e108dc) for
> lcd_panel.15
> [    3.225666] pinctrl-single 44e10800.pinmux: request pin 54 (44e108d8) for
> lcd_panel.15
> [    3.234012] pinctrl-single 44e10800.pinmux: request pin 53 (44e108d4) for
> lcd_panel.15
> [    3.242359] pinctrl-single 44e10800.pinmux: request pin 52 (44e108d0) for
> lcd_panel.15
> [    3.250708] pinctrl-single 44e10800.pinmux: request pin 51 (44e108cc) for
> lcd_panel.15
> [    3.259052] pinctrl-single 44e10800.pinmux: request pin 50 (44e108c8) for
> lcd_panel.15
> [    3.267362] pinctrl-single 44e10800.pinmux: request pin 49 (44e108c4) for
> lcd_panel.15
> [    3.275710] pinctrl-single 44e10800.pinmux: request pin 48 (44e108c0) for
> lcd_panel.15
> [    3.284057] pinctrl-single 44e10800.pinmux: request pin 47 (44e108bc) for
> lcd_panel.15
> [    3.292404] pinctrl-single 44e10800.pinmux: request pin 46 (44e108b8) for
> lcd_panel.15
> [    3.300748] pinctrl-single 44e10800.pinmux: request pin 45 (44e108b4) for
> lcd_panel.15
> [    3.309091] pinctrl-single 44e10800.pinmux: request pin 44 (44e108b0) for
> lcd_panel.15
> [    3.317404] pinctrl-single 44e10800.pinmux: request pin 43 (44e108ac) for
> lcd_panel.15
> [    3.325751] pinctrl-single 44e10800.pinmux: request pin 42 (44e108a8) for
> lcd_panel.15
> [    3.334098] pinctrl-single 44e10800.pinmux: request pin 41 (44e108a4) for
> lcd_panel.15
> [    3.342445] pinctrl-single 44e10800.pinmux: request pin 40 (44e108a0) for
> lcd_panel.15
> [    3.350794] pinctrl-single 44e10800.pinmux: enabling pinmux_lcd_pins
> function6
> [    3.358477] panel lcd_panel.15: obtain a copy of previously claimed pinctrl
> [    3.366365] [drm:drm_platform_init],
> [    3.370270] [drm:drm_get_platform_dev],
> [    3.374940] [drm:drm_get_minor],
> [    3.381143] [drm:drm_get_minor], new minor assigned 64
> [    3.386558] [drm:drm_get_minor],
> [    3.391333] [drm:drm_get_minor], new minor assigned 0
> [    3.397698] [drm:modeset_init], loading module: panel
> [    3.403141] [drm:drm_sysfs_connector_add], adding "LVDS-1" to sysfs
> [    3.410040] [drm:drm_sysfs_hotplug_event], generating hotplug event
> [    3.416678] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
> [    3.423662] [drm] No driver support for vblank timestamp query.
> [    3.429958] [drm:drm_irq_install], irq=52
> [    3.434354] [drm:drm_helper_probe_single_connector_modes],
> [CONNECTOR:5:LVDS-1]
> [    3.442160] [drm:drm_helper_probe_single_connector_modes],
> [CONNECTOR:5:LVDS-1] probed modes :
> [    3.451246] [drm:drm_mode_debug_printmodeline], Modeline 6:"800x480" 110
> 50000 800 887 887 887 480 512 512 51a
> [    3.462611] [drm:drm_setup_crtcs],
> [    3.466284] [drm:drm_enable_connectors], connector 5 enabled? yes
> [    3.472722] [drm:drm_target_preferred], looking for cmdline mode on
> connector 5
> [    3.480430] [drm:drm_target_preferred], looking for preferred mode on
> connector 5
> [    3.488320] [drm:drm_target_preferred], found mode 800x480
> [    3.494083] [drm:drm_setup_crtcs], picking CRTCs for 2048x2048 config
> [    3.500886] [drm:drm_setup_crtcs], desired mode 800x480 set on crtc 3
> [    3.507667] [drm:drm_fbdev_cma_create], surface width(800), height(480) and
> bpp(16)
> [    3.517992] [drm:drm_framebuffer_reference], FB ID: 8
> [    3.525610] tilcdc 4830e000.fb: fb0:  frame buffer device
> [    3.531352] tilcdc 4830e000.fb: registered panic notifier
> [    3.537123] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
> [    3.544706] pinctrl core: add 1 pinmux maps
> [    3.549234] pinctrl-single 44e10800.pinmux: found group selector 7 for
> pinmux_i2c1_pins
> [    3.557662] pinctrl-single 44e10800.pinmux: request pin 98 (44e10988) for
> 44e0b000.i2c
> [    3.566020] pinctrl-single 44e10800.pinmux: request pin 99 (44e1098c) for
> 44e0b000.i2c
> [    3.574373] pinctrl-single 44e10800.pinmux: enabling pinmux_i2c1_pins
> function7
> [    3.582257] omap_i2c 44e0b000.i2c: obtain a copy of previously claimed
> pinctrl
> [    3.592470] omap_i2c 44e0b000.i2c: bus 1 rev0.11 at 400 kHz
> [    3.602698] tps65217-pmic tps65217-pmic: no of_node; not parsing pinctrl DT
> [    3.613524] DCDC1: 925 <--> 1800 mV at 1800 mV
> [    3.620565] vdd_mpu: 925 <--> 1325 mV at 1100 mV
> [    3.627579] vdd_core: 925 <--> 1150 mV at 1100 mV
> [    3.634644] LDO1: 1000 <--> 3300 mV at 1800 mV
> [    3.641483] LDO2: 900 <--> 3300 mV at 3300 mV
> [    3.648293] LDO3: 1800 <--> 3300 mV at 3300 mV
> [    3.655102] LDO4: 1800 <--> 3300 mV at 3300 mV
> [    3.661130] tps65217-bl tps65217-bl: no of_node; not parsing pinctrl DT
> [    3.671184] tps65217 1-0024: TPS65217 ID 0xf version 1.1
> [    3.678824] dummy 1-0051: no of_node; not parsing pinctrl DT
> [    3.685255] dummy 1-0052: no of_node; not parsing pinctrl DT
> [    3.691691] dummy 1-0053: no of_node; not parsing pinctrl DT
> [    3.697774] at24 1-0050: 1024 byte 24c08 EEPROM, writable, 16 bytes/write
> [    3.710546] si5351 1-0060: si5351_pll_recalc_rate - plla: p1 = 3074, p2 =
> 116286, p3 = 390625, parent_rate = 8
>
> Seems drm mode is set [drm:drm_setup_crtcs], desired mode 800x480 set on crtc
> 3
> I have no clue, what is wrong.
>
> Thanks,
> Michal
>


More information about the devicetree-discuss mailing list