techpack: display: msm: notify sysfs for fod ui changes

Change-Id: I5559a9cfe00af58847e089764452a24c39830e20
This commit is contained in:
Demon000
2020-08-18 01:14:55 +02:00
committed by Sebastiano Barezzi
parent c1a6ac3774
commit c9debe88b1
3 changed files with 35 additions and 0 deletions

View File

@@ -5072,7 +5072,29 @@ static int dsi_display_validate_split_link(struct dsi_display *display)
return rc;
}
static ssize_t sysfs_fod_ui_read(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct dsi_display *display;
bool status;
display = dev_get_drvdata(dev);
if (!display) {
pr_err("Invalid display\n");
return -EINVAL;
}
status = atomic_read(&display->fod_ui);
return snprintf(buf, PAGE_SIZE, "%d\n", status);
}
static DEVICE_ATTR(fod_ui, 0444,
sysfs_fod_ui_read,
NULL);
static struct attribute *display_fs_attrs[] = {
&dev_attr_fod_ui.attr,
NULL,
};
@@ -5102,6 +5124,13 @@ static int dsi_display_sysfs_deinit(struct dsi_display *display)
return 0;
}
void dsi_display_set_fod_ui(struct dsi_display *display, bool status)
{
struct device *dev = &display->pdev->dev;
atomic_set(&display->fod_ui, status);
sysfs_notify(&dev->kobj, NULL, "fod_ui");
}
/**
* dsi_display_bind - bind dsi device with controlling device
* @dev: Pointer to base of platform device
@@ -5179,6 +5208,8 @@ static int dsi_display_bind(struct device *dev,
goto error;
}
atomic_set(&display->fod_ui, false);
memset(&info, 0x0, sizeof(info));
display_for_each_ctrl(i, display) {

View File

@@ -275,6 +275,7 @@ struct dsi_display {
u32 clk_gating_config;
bool queue_cmd_waits;
struct workqueue_struct *dma_cmd_workq;
atomic_t fod_ui;
};
int dsi_display_dev_probe(struct platform_device *pdev);
@@ -748,4 +749,6 @@ int dsi_display_esd_irq_ctrl(struct dsi_display *display,
struct dsi_display *get_main_display(void);
void dsi_display_set_fod_ui(struct dsi_display *display, bool status);
#endif /* _DSI_DISPLAY_H_ */

View File

@@ -805,6 +805,7 @@ void sde_connector_update_fod_hbm(struct drm_connector *connector)
mutex_lock(&display->panel->panel_lock);
dsi_panel_set_fod_hbm(display->panel, status);
mutex_unlock(&display->panel->panel_lock);
dsi_display_set_fod_ui(display, status);
}
struct sde_connector_dyn_hdr_metadata *sde_connector_get_dyn_hdr_meta(