drm/sysfs: Nuke TV/DVI property files
This goes all the way back to the original KMS commit aeons ago
commit f453ba0460
Author: Dave Airlie <airlied@redhat.com>
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.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1459331120-27864-5-git-send-email-daniel.vetter@ffwll.ch
This commit is contained in:
parent
e6bf6e5799
commit
aa2e2996b1
|
@ -287,102 +287,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 +300,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 +317,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
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue