OdevAttribute: Add config_odev_get_attribute helper
Add a config_odev_get_attribute helper, and replace the diy looping over all the attributes done in various places with calls to this helper. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
3346166a65
commit
10c64e8056
|
@ -145,6 +145,18 @@ config_odev_free_attribute_list(struct OdevAttributes *attribs)
|
||||||
free(attribs);
|
free(attribs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct OdevAttribute *
|
||||||
|
config_odev_find_attribute(struct OdevAttributes *attribs, int attrib_id)
|
||||||
|
{
|
||||||
|
struct OdevAttribute *oa;
|
||||||
|
|
||||||
|
xorg_list_for_each_entry(oa, &attribs->list, member) {
|
||||||
|
if (oa->attrib_id == attrib_id)
|
||||||
|
return oa;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
||||||
const char *attrib_name)
|
const char *attrib_name)
|
||||||
|
@ -161,6 +173,18 @@ config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
config_odev_get_attribute(struct OdevAttributes *attribs, int attrib_id)
|
||||||
|
{
|
||||||
|
struct OdevAttribute *oa;
|
||||||
|
|
||||||
|
oa = config_odev_find_attribute(attribs, attrib_id);
|
||||||
|
if (!oa)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return oa->attrib_name;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
config_odev_free_attributes(struct OdevAttributes *attribs)
|
config_odev_free_attributes(struct OdevAttributes *attribs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,26 +92,13 @@ xf86_add_platform_device_attrib(int index, int attrib_id, char *attrib_name)
|
||||||
char *
|
char *
|
||||||
xf86_get_platform_attrib(int index, int attrib_id)
|
xf86_get_platform_attrib(int index, int attrib_id)
|
||||||
{
|
{
|
||||||
struct xf86_platform_device *device = &xf86_platform_devices[index];
|
return config_odev_get_attribute(xf86_platform_devices[index].attribs, attrib_id);
|
||||||
struct OdevAttribute *oa;
|
|
||||||
|
|
||||||
xorg_list_for_each_entry(oa, &device->attribs->list, member) {
|
|
||||||
if (oa->attrib_id == attrib_id)
|
|
||||||
return oa->attrib_name;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
xf86_get_platform_device_attrib(struct xf86_platform_device *device, int attrib_id)
|
xf86_get_platform_device_attrib(struct xf86_platform_device *device, int attrib_id)
|
||||||
{
|
{
|
||||||
struct OdevAttribute *oa;
|
return config_odev_get_attribute(device->attribs, attrib_id);
|
||||||
|
|
||||||
xorg_list_for_each_entry(oa, &device->attribs->list, member) {
|
|
||||||
if (oa->attrib_id == attrib_id)
|
|
||||||
return oa->attrib_name;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -118,17 +118,11 @@ xf86PlatformReprobeDevice(int index, struct OdevAttributes *attribs)
|
||||||
void
|
void
|
||||||
xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
|
xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
|
||||||
{
|
{
|
||||||
struct OdevAttribute *attrib;
|
|
||||||
int i;
|
int i;
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
Bool ret;
|
Bool ret;
|
||||||
|
|
||||||
xorg_list_for_each_entry(attrib, &attribs->list, member) {
|
path = config_odev_get_attribute(attribs, ODEV_ATTRIB_PATH);
|
||||||
if (attrib->attrib_id == ODEV_ATTRIB_PATH) {
|
|
||||||
path = attrib->attrib_name;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!path)
|
if (!path)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,9 @@ Bool
|
||||||
config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
||||||
const char *attrib_name);
|
const char *attrib_name);
|
||||||
|
|
||||||
|
char *
|
||||||
|
config_odev_get_attribute(struct OdevAttributes *attribs, int attrib_id);
|
||||||
|
|
||||||
void
|
void
|
||||||
config_odev_free_attributes(struct OdevAttributes *attribs);
|
config_odev_free_attributes(struct OdevAttributes *attribs);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue