summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-08-11 21:55:03 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-08-11 21:55:03 +0000
commitde60505351e76a27be346eb381e460eb746c52a9 (patch)
treefac12150ab8cb37c46901fd3eb06ee188be951ba
parent4216bb955341b142b326a07a7a2d217450e4cb7f (diff)
parentd80cf63a737510ca3562a4941717ffb28e47dc8f (diff)
downloaddisplay-drivers-android-msm-eos-5.15-tm-wear-kr3-pixel-watch.tar.gz
Snap for 10648389 from d80cf63a737510ca3562a4941717ffb28e47dc8f to android13-msm-pixelwatch-5.15-eos-releaseandroid-wear-13.0.0_r0.8android-wear-13.0.0_r0.6android-wear-13.0.0_r0.4android-wear-13.0.0_r0.10android-msm-eos-5.15-tm-wear-kr3-pixel-watch
Change-Id: I90ee15c4840bb9666040011435e08ed6043cc2f9
-rw-r--r--msm/dsi/dsi_display.c15
-rw-r--r--msm/dsi/dsi_display.h12
-rw-r--r--msm/sde/sde_connector.c31
-rw-r--r--msm/sde/sde_connector.h12
-rw-r--r--msm/sde/sde_kms.c1
5 files changed, 66 insertions, 5 deletions
diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c
index fabc981a..476b54e8 100644
--- a/msm/dsi/dsi_display.c
+++ b/msm/dsi/dsi_display.c
@@ -1393,6 +1393,21 @@ int dsi_display_set_hbm(struct drm_connector *connector, bool cmd, void *disp)
return rc;
}
+int dsi_display_get_vendor_string(struct drm_connector *connector, void *display, char *buf,
+ u32 buf_len)
+{
+ struct dsi_display *disp = (struct dsi_display *)display;
+ int len = 0;
+
+ if (!disp || !disp->panel) {
+ DSI_ERR("Invalid param(s) dsi_display or dsi_panel");
+ return -EINVAL;
+ }
+
+ len = scnprintf(buf, buf_len, "%s", disp->panel->name);
+ return len;
+}
+
#if IS_ENABLED(CONFIG_DEBUG_FS)
static bool dsi_display_is_te_based_esd(struct dsi_display *display)
{
diff --git a/msm/dsi/dsi_display.h b/msm/dsi/dsi_display.h
index 2458fb13..144af668 100644
--- a/msm/dsi/dsi_display.h
+++ b/msm/dsi/dsi_display.h
@@ -879,4 +879,16 @@ int dsi_display_ctrl_vreg_off(struct dsi_display *display);
*/
int dsi_display_set_hbm(struct drm_connector *connector, bool cmd, void *disp);
+/**
+ * dsi_display_get_vendor_string() - Get panel's vendor string
+ * @connector: Pointer to drm connector structure
+ * @display: Pointer to private display structure
+ * @buf: String buffer
+ * @buf_len: String buffer length
+ *
+ * Return: Size of string written to buffer
+ */
+int dsi_display_get_vendor_string(struct drm_connector *connector, void *display, char *buf,
+ u32 buf_len);
+
#endif /* _DSI_DISPLAY_H_ */
diff --git a/msm/sde/sde_connector.c b/msm/sde/sde_connector.c
index ba3b200d..3e869bae 100644
--- a/msm/sde/sde_connector.c
+++ b/msm/sde/sde_connector.c
@@ -3386,14 +3386,35 @@ static ssize_t twm_enable_show(struct device *device,
return scnprintf(buf, PAGE_SIZE, "%d\n", sde_conn->twm_en);
}
+static ssize_t vendor_string_show(struct device *device, struct device_attribute *attr, char *buf)
+{
+ struct drm_connector *conn;
+ struct sde_connector *sde_conn;
+ int len = 0;
+
+ conn = dev_get_drvdata(device);
+ sde_conn = to_sde_connector(conn);
+ if (!sde_conn->ops.get_vendor_string) {
+ SDE_ERROR("no cmd get_vendor_string for connector name %s\n", sde_conn->name);
+ return -EINVAL;
+ }
+
+ len = sde_conn->ops.get_vendor_string(conn, sde_conn->display, buf, PAGE_SIZE);
+ if (len <= 0) {
+ SDE_ERROR("cannot get vendor string %s\n", sde_conn->name);
+ return -EINVAL;
+ }
+
+ return len;
+}
+
static DEVICE_ATTR_RO(panel_power_state);
static DEVICE_ATTR_RW(twm_enable);
+static DEVICE_ATTR_RO(vendor_string);
-static struct attribute *sde_connector_dev_attrs[] = {
- &dev_attr_panel_power_state.attr,
- &dev_attr_twm_enable.attr,
- NULL
-};
+static struct attribute *sde_connector_dev_attrs[] = { &dev_attr_panel_power_state.attr,
+ &dev_attr_twm_enable.attr,
+ &dev_attr_vendor_string.attr, NULL };
static const struct attribute_group sde_connector_attr_group = {
.attrs = sde_connector_dev_attrs,
diff --git a/msm/sde/sde_connector.h b/msm/sde/sde_connector.h
index c155bc68..cd0b2fa1 100644
--- a/msm/sde/sde_connector.h
+++ b/msm/sde/sde_connector.h
@@ -446,6 +446,18 @@ struct sde_connector_ops {
* Return: Zero on Success
*/
int (*set_hbm)(struct drm_connector *connector, bool cmd, void *disp);
+
+ /**
+ * get_vendor_string() - Get panel's vendor string
+ * @connector: Pointer to drm connector structure
+ * @display: Pointer to private display structure
+ * @buf: String buffer
+ * @buf_len: String buffer length
+ *
+ * Return: String length written to buffer
+ */
+ int (*get_vendor_string)(struct drm_connector *connector, void *display, char *buf,
+ u32 buf_len);
};
/**
diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c
index 2d834db7..5cfe7e24 100644
--- a/msm/sde/sde_kms.c
+++ b/msm/sde/sde_kms.c
@@ -1830,6 +1830,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
.get_num_lm_from_mode = dsi_conn_get_lm_from_mode,
.update_transfer_time = dsi_display_update_transfer_time,
.set_hbm = dsi_display_set_hbm,
+ .get_vendor_string = dsi_display_get_vendor_string,
};
static const struct sde_connector_ops wb_ops = {
.post_init = sde_wb_connector_post_init,