drm: Consolidate connector arrays in drm_atomic_state
[cascardo/linux.git] / drivers / gpu / drm / drm_sysfs.c
index d503f8e..fa7fadc 100644 (file)
@@ -208,9 +208,12 @@ static ssize_t status_show(struct device *device,
                           char *buf)
 {
        struct drm_connector *connector = to_drm_connector(device);
+       enum drm_connector_status status;
+
+       status = READ_ONCE(connector->status);
 
        return snprintf(buf, PAGE_SIZE, "%s\n",
-                       drm_get_connector_status_name(connector->status));
+                       drm_get_connector_status_name(status));
 }
 
 static ssize_t dpms_show(struct device *device,
@@ -231,9 +234,11 @@ static ssize_t enabled_show(struct device *device,
                           char *buf)
 {
        struct drm_connector *connector = to_drm_connector(device);
+       bool enabled;
+
+       enabled = READ_ONCE(connector->encoder);
 
-       return snprintf(buf, PAGE_SIZE, "%s\n", connector->encoder ? "enabled" :
-                       "disabled");
+       return snprintf(buf, PAGE_SIZE, enabled ? "enabled\n" : "disabled\n");
 }
 
 static ssize_t edid_show(struct file *filp, struct kobject *kobj,
@@ -287,102 +292,6 @@ static ssize_t modes_show(struct device *device,
        return written;
 }
 
-static ssize_t tv_subconnector_show(struct device *device,
-                                   struct device_attribute *attr,
-                                   char *buf)
-{
-       struct drm_connector *connector = to_drm_connector(device);
-       struct drm_device *dev = connector->dev;
-       struct drm_property *prop;
-       uint64_t subconnector;
-       int ret;
-
-       prop = dev->mode_config.tv_subconnector_property;
-       if (!prop) {
-               DRM_ERROR("Unable to find subconnector property\n");
-               return 0;
-       }
-
-       ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
-       if (ret)
-               return 0;
-
-       return snprintf(buf, PAGE_SIZE, "%s",
-                       drm_get_tv_subconnector_name((int)subconnector));
-}
-
-static ssize_t tv_select_subconnector_show(struct device *device,
-                                          struct device_attribute *attr,
-                                          char *buf)
-{
-       struct drm_connector *connector = to_drm_connector(device);
-       struct drm_device *dev = connector->dev;
-       struct drm_property *prop;
-       uint64_t subconnector;
-       int ret;
-
-       prop = dev->mode_config.tv_select_subconnector_property;
-       if (!prop) {
-               DRM_ERROR("Unable to find select subconnector property\n");
-               return 0;
-       }
-
-       ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
-       if (ret)
-               return 0;
-
-       return snprintf(buf, PAGE_SIZE, "%s",
-                       drm_get_tv_select_name((int)subconnector));
-}
-
-static ssize_t dvii_subconnector_show(struct device *device,
-                                     struct device_attribute *attr,
-                                     char *buf)
-{
-       struct drm_connector *connector = to_drm_connector(device);
-       struct drm_device *dev = connector->dev;
-       struct drm_property *prop;
-       uint64_t subconnector;
-       int ret;
-
-       prop = dev->mode_config.dvi_i_subconnector_property;
-       if (!prop) {
-               DRM_ERROR("Unable to find subconnector property\n");
-               return 0;
-       }
-
-       ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
-       if (ret)
-               return 0;
-
-       return snprintf(buf, PAGE_SIZE, "%s",
-                       drm_get_dvi_i_subconnector_name((int)subconnector));
-}
-
-static ssize_t dvii_select_subconnector_show(struct device *device,
-                                            struct device_attribute *attr,
-                                            char *buf)
-{
-       struct drm_connector *connector = to_drm_connector(device);
-       struct drm_device *dev = connector->dev;
-       struct drm_property *prop;
-       uint64_t subconnector;
-       int ret;
-
-       prop = dev->mode_config.dvi_i_select_subconnector_property;
-       if (!prop) {
-               DRM_ERROR("Unable to find select subconnector property\n");
-               return 0;
-       }
-
-       ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
-       if (ret)
-               return 0;
-
-       return snprintf(buf, PAGE_SIZE, "%s",
-                       drm_get_dvi_i_select_name((int)subconnector));
-}
-
 static DEVICE_ATTR_RW(status);
 static DEVICE_ATTR_RO(enabled);
 static DEVICE_ATTR_RO(dpms);
@@ -396,54 +305,6 @@ static struct attribute *connector_dev_attrs[] = {
        NULL
 };
 
-static DEVICE_ATTR_RO(tv_subconnector);
-static DEVICE_ATTR_RO(tv_select_subconnector);
-
-static struct attribute *connector_tv_dev_attrs[] = {
-       &dev_attr_tv_subconnector.attr,
-       &dev_attr_tv_select_subconnector.attr,
-       NULL
-};
-
-static DEVICE_ATTR_RO(dvii_subconnector);
-static DEVICE_ATTR_RO(dvii_select_subconnector);
-
-static struct attribute *connector_dvii_dev_attrs[] = {
-       &dev_attr_dvii_subconnector.attr,
-       &dev_attr_dvii_select_subconnector.attr,
-       NULL
-};
-
-/* Connector type related helpers */
-static int kobj_connector_type(struct kobject *kobj)
-{
-       struct device *dev = kobj_to_dev(kobj);
-       struct drm_connector *connector = to_drm_connector(dev);
-
-       return connector->connector_type;
-}
-
-static umode_t connector_is_dvii(struct kobject *kobj,
-                                struct attribute *attr, int idx)
-{
-       return kobj_connector_type(kobj) == DRM_MODE_CONNECTOR_DVII ?
-               attr->mode : 0;
-}
-
-static umode_t connector_is_tv(struct kobject *kobj,
-                              struct attribute *attr, int idx)
-{
-       switch (kobj_connector_type(kobj)) {
-       case DRM_MODE_CONNECTOR_Composite:
-       case DRM_MODE_CONNECTOR_SVIDEO:
-       case DRM_MODE_CONNECTOR_Component:
-       case DRM_MODE_CONNECTOR_TV:
-               return attr->mode;
-       }
-
-       return 0;
-}
-
 static struct bin_attribute edid_attr = {
        .attr.name = "edid",
        .attr.mode = 0444,
@@ -461,20 +322,8 @@ static const struct attribute_group connector_dev_group = {
        .bin_attrs = connector_bin_attrs,
 };
 
-static const struct attribute_group connector_tv_dev_group = {
-       .attrs = connector_tv_dev_attrs,
-       .is_visible = connector_is_tv,
-};
-
-static const struct attribute_group connector_dvii_dev_group = {
-       .attrs = connector_dvii_dev_attrs,
-       .is_visible = connector_is_dvii,
-};
-
 static const struct attribute_group *connector_dev_groups[] = {
        &connector_dev_group,
-       &connector_tv_dev_group,
-       &connector_dvii_dev_group,
        NULL
 };