On Wed, Mar 30, 2016 at 5:45 AM, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > This goes all the way back to the original KMS commit aeons ago > > commit f453ba0460742ad027ae0c4c7d61e62817b3e7ef > Author: Dave Airlie <airlied@xxxxxxxxxx> > Date: Fri Nov 7 14:05:41 2008 -0800 > > DRM: add mode setting support > > But it seems to be completely unused. Only i915 and nouveau even > register these properties, and the corresponding DDX don't even look > at them. Also the sysfs files are read-only, so not useful to > configure anything. > > I suspect that this was added with the goal to have read-only access > to all properties in sysfs, but we never followed through on that. > Also, that should be done in a more generic fashion. > > Since it would be real work to fix up the locking (with atomic we're > now chasing pointers when reading properties) and it seems unused lets > just nuke this all. It's easier. Of course we'll keep the properties > themselves, those are still exposed through the KMS ioctls. > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/drm_sysfs.c | 156 -------------------------------------------- > 1 file changed, 156 deletions(-) > > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c > index 43875cb35691..fa7fadce8063 100644 > --- a/drivers/gpu/drm/drm_sysfs.c > +++ b/drivers/gpu/drm/drm_sysfs.c > @@ -292,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); > @@ -401,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, > @@ -466,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 > }; > > -- > 2.8.0.rc3 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel