On 29.09.2023 00:00, Jessica Zhang wrote: > Hi Konrad, > > On 9/27/2023 6:19 AM, Konrad Dybcio wrote: >> Add support for the 2700x1224 AMOLED BOE panel bundled with a RM692E5 >> driver IC, as found on the Fairphone 5 smartphone. >> >> Co-developed-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx> >> Signed-off-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx> >> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> >> --- [...] >> +static int rm692e5_on(struct rm692e5_panel *ctx) >> +{ >> + struct mipi_dsi_device *dsi = ctx->dsi; >> + struct device *dev = &dsi->dev; >> + int ret; >> + >> + dsi->mode_flags |= MIPI_DSI_MODE_LPM; >> + >> + mipi_dsi_generic_write_seq(dsi, 0xfe, 0x41); >> + usleep_range(1000, 2000); > > I'm not familiar with this panel, but is calling usleep() after almost every single DCS command necessary or specified by the spec? Removing them doesn't seem to cause adverse effects, so I'm willing to do that :) [...] > Are these generic DCS commands? If so, can you use the MIPI_DCS_* command macros/helpers when applicable? Unfortunately, it doesn't seem so. [...] > Just to check my understanding of the comment here.. so the above DCS command will set the panel to 90Hz, and if we change the parameter to 0x00, it will be set to 60Hz instead? Yes. Since the commands differ, I was reluctant to introduce a second, identical-except-60hz mode for now. Though I can define a driver-specific struct like this: struct rm69e25_panel_desc { drm_display_mode drm_mode; u8 framerate_magic; }; and then define both a 60 and a 90 mode. I also moved DCS calls from .unprepare to .disable so that they are not sent to a DSI host that's powered off and will include that in v2. LMK if you have more comments. Konrad