Re: [PATCH 09/12] drm/rockchip: lvds: Add PX30 support【请注意,邮件由linux-rockchip-bounces+sandy.huang=rock-chips.com at lists.infradead.org代发】
sandy.huang
hjc at rock-chips.com
Wed Dec 18 03:17:03 UTC 2019
Hi Maxime & Miquel,
在 2019/12/16 下午7:14, Maxime Ripard 写道:
> On Mon, Dec 16, 2019 at 12:03:12PM +0100, Miquel Raynal wrote:
>> Maxime Ripard <maxime at cerno.tech> wrote on Mon, 16 Dec 2019 11:58:27 +0100:
>>> Hi,
>>>
>>> On Fri, Dec 13, 2019 at 07:10:48PM +0100, Miquel Raynal wrote:
>>>> +static int px30_lvds_grf_config(struct drm_encoder *encoder,
>>>> + struct drm_display_mode *mode)
>>>> +{
>>>> + struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
>>>> + u8 nhsync = !(mode->flags & DRM_MODE_FLAG_PHSYNC);
>>>> + u8 nvsync = !(mode->flags & DRM_MODE_FLAG_PVSYNC);
>>>> + u8 ndclk = !(mode->flags & DRM_MODE_FLAG_PCSYNC);
>>>> + int ret;
>>>> +
>>>> + if (lvds->output != DISPLAY_OUTPUT_LVDS) {
>>>> + DRM_DEV_ERROR(lvds->dev, "Unsupported display output %d\n",
>>>> + lvds->output);
>>>> + return -EINVAL;
>>>> + }
>>>> +
>>>> + if (nhsync ^ nvsync) {
>>>> + DRM_DEV_ERROR(lvds->dev, "Unsupported Hsync/Vsync polarity\n");
>>>> + return -EINVAL;
>>>> + }
>>>> +
>>>> + /* Set format */
>>>> + ret = regmap_update_bits(lvds->grf, PX30_LVDS_GRF_PD_VO_CON1,
>>>> + PX30_LVDS_FORMAT(lvds->format),
>>>> + PX30_LVDS_FORMAT(lvds->format));
>>>> + if (ret)
>>>> + return ret;
>>>> +
>>>> + /* Control Hsync/Vsync polarity */
>>>> + ret = regmap_update_bits(lvds->grf, PX30_LVDS_GRF_PD_VO_CON0,
>>>> + PX30_LVDS_TIE_CLKS(1),
>>>> + PX30_LVDS_TIE_CLKS(1));
>>>> + if (ret)
>>>> + return ret;
>>>> +
>>>> + /* Set Hsync/Vsync polarity */
>>>> + ret = regmap_update_bits(lvds->grf, PX30_LVDS_GRF_PD_VO_CON0,
>>>> + PX30_LVDS_INVERT_CLKS(1),
>>>> + PX30_LVDS_INVERT_CLKS(nhsync));
>>>> + if (ret)
>>>> + return ret;
>>> I don't know the hardware but it seems pretty weird to me. hsync and
>>> vsync in LVDS are not clocks (or even signals), they're a bit in the
>>> payload. Is there any explanation in the datasheet (or even a
>>> datasheet in the first place)?
>> There is no explanation about this in the PX30 TRM part 1 (public). But
>> you are right the naming is weird. Could the "tie clocks" thing above
>> mean something to you/people knowing the LVDS world?
> I have no idea what that could mean :)
This two bit(GRF_CON0[9,8]) is not for hsync/vsync polarity config, the
polarity is done at vop_crtc_atomic_enable at rockchip_drm_vop.c.
Before px30, all rockchip platform lvds output payload is include
hsync,vsync and den clock signal. About years ago, we meet a lvds panel
can't work normally at rk3288, from the panel spec we know the panel
need lvds work den mode only, the hsync/vsync need to set 0 at blank
time, so we add this two bit(GRF_CON0[9,8]) for this mode.
but now we can't get in touch with the customer and get the panel to
test this function, so we can't verify the panel work unnormally is
because of the den mode only and the hsync vsync signal level at blank
time.
I recommend not including this part of configuration before we test this
funcion at den mode only lvds panel,thanks.
>
> Maxime
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20191218/caf90aa8/attachment-0001.htm>
More information about the dri-devel
mailing list