On Wed, Mar 30, 2016 at 09:49:26AM -0400, Alex Deucher wrote: > 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> Applied, thanks for the review. -Daniel > > > --- > > 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 -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel