On Mon, May 2, 2016 at 12:56 PM, Thierry Reding <thierry.reding@xxxxxxxxx> wrote: > On Fri, Apr 29, 2016 at 08:04:09AM -0400, Rob Clark wrote: >> On Fri, Apr 29, 2016 at 1:32 AM, Vinay Simha <simhavcs@xxxxxxxxx> wrote: >> > hi, >> > >> > In nx7, backlight brightness control is controlled by dcs commands of >> > MIPI_DCS_SET_DISPLAY_BRIGHTNESS. >> > there is no PWM going to panel interface directly as we have in ifc6410/nx5 >> >> afaiu it is not uncommon to need to control backlight via panel (ie, I >> think basically all adaptive-backlight panels). I think the answer is >> for these panels, the panel driver would register it's own backlight >> driver, rather than get a (pwm, etc) backlight via dt bindings. > > Yes, that'd be my recommendation as well. > >> Possibly if the backlight commands are standardized enough then we >> could implement a single drm_panel_dsi_backlight helper which could be >> created by any of the dsi adaptive-backlight panels (ie. pass in a >> 'struct mipi_dsi_device *').. something like: >> >> struct drm_panel_dsi_backlight { >> struct mipi_panel_dsi_device *link; >> ... >> } >> >> struct backlight_device *drm_panel_create_dsi_backlight(struct >> mipi_panel_dsi_device *link) >> { >> struct drm_panel_dsi_backlight *dsi_bl; >> ... >> return devm_backlight_device_register(&link->dev, ..., dsi_bl, >> dsi_bl_ops, props); >> } struct backlight_device *devm_backlight_device_register(struct device *dev, const char *name, struct device *parent, void *devdata, const struct backlight_ops *ops, const struct backlight_properties *props) struct device *dev = &jdi->dsi->dev; devm_backlight_device_register( dev, dev_name(dev), dev, jdi, &dsi_bl_ops, &props); Here does the parent also should be jdi->dsi->dev ? because the backlight is not mapped to fb of android ( android-> settings->brightness) , even though i can change the brightness value from sysfs and it works only when the display is off. When it awakes(power button press) panel_enable calls, backlight_update_status will have the latest brightness value. if echo the brightness value when the display is awake, dsi fails for brightness control. echo 100 > /sys/class/backlight/4700000.qcom,mdss_dsi.0/brightness [ 152.865949] dsi_cmds2buf_tx: cmd dma tx failed, type=0x15, data0=0x51, len=4 static int dsi_bl_update_status(struct backlight_device *bl) { struct jdi_panel *jdi = bl_get_data(bl); struct mipi_dsi_device *dsi = jdi->dsi; int ret; u8 brightness = bl->props.brightness; ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_BRIGHTNESS, &brightness, sizeof(brightness)); if (ret < 0) return ret; return 0; } static const struct backlight_ops dsi_bl_ops = { .update_status = dsi_bl_update_status, }; john, for android fb do we need to map the backlight in userspace? As i have seen in 3.4 kernel when we register the backlight using platform_device_register, backlight used to map with the userspace(ubuntu/fedora) settings->brightness. > > I agree it would make sense to have a DCS specific helper for backlight. > I'm somewhat sceptical about the standardization, even though these seem > to be part of DCS 1.3. But perhaps we can start by being optimistic. > > Thierry -- Regards, Vinay Simha.B.N. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel