diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index f62ce5f07eaa..77cd8ec1d0e1 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -234,13 +234,14 @@ static ssize_t panelId_show(struct device *device, char *buf) { struct drm_connector *connector = to_drm_connector(device); + int written = 0; mutex_lock(&connector->dev->mode_config.mutex); - snprintf(buf, PAGE_SIZE, "0x%016llx\n", + written = snprintf(buf, PAGE_SIZE, "0x%016llx\n", connector->display_info.panel_id); mutex_unlock(&connector->dev->mode_config.mutex); - return 20; + return written; } static ssize_t panelVer_show(struct device *device, @@ -248,13 +249,14 @@ static ssize_t panelVer_show(struct device *device, char *buf) { struct drm_connector *connector = to_drm_connector(device); + int written = 0; mutex_lock(&connector->dev->mode_config.mutex); - snprintf(buf, PAGE_SIZE, "0x%016llx\n", + written = snprintf(buf, PAGE_SIZE, "0x%016llx\n", connector->display_info.panel_ver); mutex_unlock(&connector->dev->mode_config.mutex); - return 20; + return written; } static ssize_t panelName_show(struct device *device, @@ -262,14 +264,30 @@ static ssize_t panelName_show(struct device *device, char *buf) { struct drm_connector *connector = to_drm_connector(device); + int written = 0; mutex_lock(&connector->dev->mode_config.mutex); - snprintf(buf, PAGE_SIZE, "%s\n", connector->display_info.panel_name); + written = snprintf(buf, PAGE_SIZE, "%s\n", connector->display_info.panel_name); mutex_unlock(&connector->dev->mode_config.mutex); - return sizeof(connector->display_info.panel_name); + return written; } +static ssize_t panelRegDA_show(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct drm_connector *connector = to_drm_connector(device); + int written = 0; + + mutex_lock(&connector->dev->mode_config.mutex); + written = snprintf(buf, PAGE_SIZE, "0x%02x\n", connector->display_info.panel_regDA); + mutex_unlock(&connector->dev->mode_config.mutex); + + return written; +} + + static DEVICE_ATTR_RW(status); static DEVICE_ATTR_RO(enabled); static DEVICE_ATTR_RO(dpms); @@ -277,6 +295,7 @@ static DEVICE_ATTR_RO(modes); static DEVICE_ATTR_RO(panelId); static DEVICE_ATTR_RO(panelVer); static DEVICE_ATTR_RO(panelName); +static DEVICE_ATTR_RO(panelRegDA); static struct attribute *connector_dev_attrs[] = { @@ -287,6 +306,7 @@ static struct attribute *connector_dev_attrs[] = { &dev_attr_panelId.attr, &dev_attr_panelVer.attr, &dev_attr_panelName.attr, + &dev_attr_panelRegDA.attr, NULL }; diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index de11814cd783..092e279319f3 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -270,6 +270,7 @@ struct drm_display_info { u64 panel_id; u64 panel_ver; + u32 panel_regDA; char panel_name[DRM_DISPLAY_NAME_LEN]; diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h index 852a708e46a6..1e35b47aeed8 100644 --- a/include/drm/drm_modes.h +++ b/include/drm/drm_modes.h @@ -290,6 +290,7 @@ struct drm_display_mode { u64 panel_id; u64 panel_ver; + u32 panel_regDA; char panel_name[DRM_MODE_DISPLAY_NAME_LEN]; /** * @flags: