Skip to content

Commit

Permalink
dock: add 'type' sysfs file
Browse files Browse the repository at this point in the history
add a sysfs file to present dock type. Suggested by Holger.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Shaohua Li authored and Len Brown committed Sep 24, 2008
1 parent 61b8369 commit 8652b00
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions drivers/acpi/dock.c
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,26 @@ static ssize_t show_dock_uid(struct device *dev,
}
static DEVICE_ATTR(uid, S_IRUGO, show_dock_uid, NULL);

static ssize_t show_dock_type(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct dock_station *dock_station = *((struct dock_station **)
dev->platform_data);
char *type;

if (dock_station->flags & DOCK_IS_DOCK)
type = "dock_station";
else if (dock_station->flags & DOCK_IS_ATA)
type = "ata_bay";
else if (dock_station->flags & DOCK_IS_BAT)
type = "battery_bay";
else
type = "unknown";

return snprintf(buf, PAGE_SIZE, "%s\n", type);
}
static DEVICE_ATTR(type, S_IRUGO, show_dock_type, NULL);

/**
* dock_add - add a new dock station
* @handle: the dock station handle
Expand Down Expand Up @@ -999,6 +1019,9 @@ static int dock_add(acpi_handle handle)
dock_station = NULL;
return ret;
}
ret = device_create_file(&dock_device->dev, &dev_attr_type);
if (ret)
printk(KERN_ERR"Error %d adding sysfs file\n", ret);

/* Find dependent devices */
acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
Expand All @@ -1020,6 +1043,7 @@ static int dock_add(acpi_handle handle)
return 0;

dock_add_err_unregister:
device_remove_file(&dock_device->dev, &dev_attr_type);
device_remove_file(&dock_device->dev, &dev_attr_docked);
device_remove_file(&dock_device->dev, &dev_attr_undock);
device_remove_file(&dock_device->dev, &dev_attr_uid);
Expand Down Expand Up @@ -1047,6 +1071,7 @@ static int dock_remove(struct dock_station *dock_station)
kfree(dd);

/* cleanup sysfs */
device_remove_file(&dock_device->dev, &dev_attr_type);
device_remove_file(&dock_device->dev, &dev_attr_docked);
device_remove_file(&dock_device->dev, &dev_attr_undock);
device_remove_file(&dock_device->dev, &dev_attr_uid);
Expand Down

0 comments on commit 8652b00

Please sign in to comment.