This message contains a digitally signed email which can be read by opening the attachment. Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
--- Begin Message ---
- Subject: Re: [PATCH] drm/omap: add OMAP5 DSIPHY lane-enable support
- From: Tomi Valkeinen <tomi.valkeinen@xxxxxx>
- Date: Thu, 10 Aug 2017 11:28:44 +0300
- Cc: <dri-devel@xxxxxxxxxxxxxxxxxxxxx>, "H . Nikolaus Schaller" <hns@xxxxxxxxxxxxx>, <linux-omap@xxxxxxxxxxxxxxx>
- In-reply-to: <1545191.ArXLlpMNYh@avalon>
- References: <1502347520-27306-1-git-send-email-tomi.valkeinen@ti.com> <1545191.ArXLlpMNYh@avalon>
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
Hi, On 10/08/17 10:22, Laurent Pinchart wrote: > Hi Tomi, > > Thank you for the patch. > > On Thursday 10 Aug 2017 09:45:20 Tomi Valkeinen wrote: >> We are missing OMAP5 DSIPHY lane-enable support, which has prevented >> OMAP5 DSI working in mainline. This patch adds the lane-enable similarly >> to the recently added OMAP4 version. >> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> >> --- >> >> Based on Laurent's recent omapdrm series. >> >> drivers/gpu/drm/omapdrm/dss/dsi.c | 50 +++++++++++++++++++++++++++++++---- >> 1 file changed, 45 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c >> b/drivers/gpu/drm/omapdrm/dss/dsi.c index a66d2b1a6c74..1f0b29af9b86 100644 >> --- a/drivers/gpu/drm/omapdrm/dss/dsi.c >> +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c >> @@ -2139,14 +2139,51 @@ static int dsi_omap4_mux_pads(struct dsi_data *dsi, >> unsigned int lanes) return 0; >> } >> >> +#define OMAP5_DSIPHY_SYSCON_OFFSET 0x74 >> + >> +#define OMAP5_DSI1_LANEENABLE_SHIFT 24 >> +#define OMAP5_DSI2_LANEENABLE_SHIFT 19 >> +#define OMAP5_DSI_LANEENABLE_MASK 0x1f >> + >> +static int dsi_omap5_mux_pads(struct dsi_data *dsi, unsigned int lanes) >> +{ >> + u32 enable_mask, enable_shift, reg; >> + >> + if (!dsi->syscon) >> + return 0; > > The purpose of this check in dsi_omap4_mux_pads() was to handle the SoCs that > don't require any driver action to mux the DSI pins. Now that > dsi_enable_pads() and dsi_disable_pads() have new SoC checks, this isn't > needed anymore, dsi->syscon can't be NULL on OMAP4 or OMAP5. True, I'll drop the check. >> + if (dsi->module_id == 0) >> + enable_shift = OMAP5_DSI1_LANEENABLE_SHIFT; >> + else if (dsi->module_id == 1) >> + enable_shift = OMAP5_DSI2_LANEENABLE_SHIFT; >> + else >> + return -ENODEV; >> + >> + enable_mask = OMAP5_DSI_LANEENABLE_MASK << enable_shift; >> + >> + regmap_read(dsi->syscon, OMAP5_DSIPHY_SYSCON_OFFSET, ®); >> + reg &= ~enable_mask; >> + reg |= (lanes << enable_shift) & enable_mask; >> + regmap_write(dsi->syscon, OMAP5_DSIPHY_SYSCON_OFFSET, reg); >> + >> + return 0; >> +} >> + >> static int dsi_enable_pads(struct dsi_data *dsi, unsigned int lane_mask) >> { >> - return dsi_omap4_mux_pads(dsi, lane_mask); >> + if (dsi->data->model == DSI_MODEL_OMAP4) >> + return dsi_omap4_mux_pads(dsi, lane_mask); >> + if (dsi->data->model == DSI_MODEL_OMAP5) >> + return dsi_omap5_mux_pads(dsi, lane_mask); >> + return 0; >> } >> >> static void dsi_disable_pads(struct dsi_data *dsi) >> { >> - dsi_omap4_mux_pads(dsi, 0); >> + if (dsi->data->model == DSI_MODEL_OMAP4) >> + dsi_omap4_mux_pads(dsi, 0); >> + if (dsi->data->model == DSI_MODEL_OMAP4) > > Did you mean DSI_MODEL_OMAP5 ? As the two are mutually exclusive, I would use > an "else if". Indeed, it should be OMAP5. TomiAttachment: signature.asc
Description: OpenPGP digital signature
--- End Message ---