diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-01-02 10:12:48 -0500 |
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-01-02 10:12:48 -0500 |
| commit | ebdab07dad3d3a008e519b0a028e1e1ad5ecaef0 (patch) | |
| tree | f4ada61ebd953949b14ef75b3bfa8cb16002dc2f /drivers/ide | |
| parent | 24630dc68a499baec367d24285bc6b92207cc100 (diff) | |
ide: move sysfs support to ide-sysfs.c
While at it:
- media_string() -> ide_media_string()
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
| -rw-r--r-- | drivers/ide/Makefile | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-probe.c | 52 | ||||
| -rw-r--r-- | drivers/ide/ide-sysfs.c | 125 | ||||
| -rw-r--r-- | drivers/ide/ide.c | 72 |
4 files changed, 128 insertions, 123 deletions
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile index 177e3f8523e..410728992e6 100644 --- a/drivers/ide/Makefile +++ b/drivers/ide/Makefile | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | EXTRA_CFLAGS += -Idrivers/ide | 5 | EXTRA_CFLAGS += -Idrivers/ide |
| 6 | 6 | ||
| 7 | ide-core-y += ide.o ide-ioctls.o ide-io.o ide-iops.o ide-lib.o ide-probe.o \ | 7 | ide-core-y += ide.o ide-ioctls.o ide-io.o ide-iops.o ide-lib.o ide-probe.o \ |
| 8 | ide-taskfile.o ide-pm.o ide-park.o ide-pio-blacklist.o | 8 | ide-taskfile.o ide-pm.o ide-park.o ide-pio-blacklist.o ide-sysfs.o |
| 9 | 9 | ||
| 10 | # core IDE code | 10 | # core IDE code |
| 11 | ide-core-$(CONFIG_IDE_TIMINGS) += ide-timings.o | 11 | ide-core-$(CONFIG_IDE_TIMINGS) += ide-timings.o |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 91f5faee740..f9efd069edc 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -1420,58 +1420,6 @@ static void ide_port_cable_detect(ide_hwif_t *hwif) | |||
| 1420 | } | 1420 | } |
| 1421 | } | 1421 | } |
| 1422 | 1422 | ||
| 1423 | static ssize_t store_delete_devices(struct device *portdev, | ||
| 1424 | struct device_attribute *attr, | ||
| 1425 | const char *buf, size_t n) | ||
| 1426 | { | ||
| 1427 | ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||
| 1428 | |||
| 1429 | if (strncmp(buf, "1", n)) | ||
| 1430 | return -EINVAL; | ||
| 1431 | |||
| 1432 | ide_port_unregister_devices(hwif); | ||
| 1433 | |||
| 1434 | return n; | ||
| 1435 | }; | ||
| 1436 | |||
| 1437 | static DEVICE_ATTR(delete_devices, S_IWUSR, NULL, store_delete_devices); | ||
| 1438 | |||
| 1439 | static ssize_t store_scan(struct device *portdev, | ||
| 1440 | struct device_attribute *attr, | ||
| 1441 | const char *buf, size_t n) | ||
| 1442 | { | ||
| 1443 | ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||
| 1444 | |||
| 1445 | if (strncmp(buf, "1", n)) | ||
| 1446 | return -EINVAL; | ||
| 1447 | |||
| 1448 | ide_port_unregister_devices(hwif); | ||
| 1449 | ide_port_scan(hwif); | ||
| 1450 | |||
| 1451 | return n; | ||
| 1452 | }; | ||
| 1453 | |||
| 1454 | static DEVICE_ATTR(scan, S_IWUSR, NULL, store_scan); | ||
| 1455 | |||
| 1456 | static struct device_attribute *ide_port_attrs[] = { | ||
| 1457 | &dev_attr_delete_devices, | ||
| 1458 | &dev_attr_scan, | ||
| 1459 | NULL | ||
| 1460 | }; | ||
| 1461 | |||
| 1462 | static int ide_sysfs_register_port(ide_hwif_t *hwif) | ||
| 1463 | { | ||
| 1464 | int i, uninitialized_var(rc); | ||
| 1465 | |||
| 1466 | for (i = 0; ide_port_attrs[i]; i++) { | ||
| 1467 | rc = device_create_file(hwif->portdev, ide_port_attrs[i]); | ||
| 1468 | if (rc) | ||
| 1469 | break; | ||
| 1470 | } | ||
| 1471 | |||
| 1472 | return rc; | ||
| 1473 | } | ||
| 1474 | |||
| 1475 | static unsigned int ide_indexes; | 1423 | static unsigned int ide_indexes; |
| 1476 | 1424 | ||
| 1477 | /** | 1425 | /** |
diff --git a/drivers/ide/ide-sysfs.c b/drivers/ide/ide-sysfs.c new file mode 100644 index 00000000000..883ffacaf45 --- /dev/null +++ b/drivers/ide/ide-sysfs.c | |||
| @@ -0,0 +1,125 @@ | |||
| 1 | #include <linux/kernel.h> | ||
| 2 | #include <linux/ide.h> | ||
| 3 | |||
| 4 | char *ide_media_string(ide_drive_t *drive) | ||
| 5 | { | ||
| 6 | switch (drive->media) { | ||
| 7 | case ide_disk: | ||
| 8 | return "disk"; | ||
| 9 | case ide_cdrom: | ||
| 10 | return "cdrom"; | ||
| 11 | case ide_tape: | ||
| 12 | return "tape"; | ||
| 13 | case ide_floppy: | ||
| 14 | return "floppy"; | ||
| 15 | case ide_optical: | ||
| 16 | return "optical"; | ||
| 17 | default: | ||
| 18 | return "UNKNOWN"; | ||
| 19 | } | ||
| 20 | } | ||
| 21 | |||
| 22 | static ssize_t media_show(struct device *dev, struct device_attribute *attr, | ||
| 23 | char *buf) | ||
| 24 | { | ||
| 25 | ide_drive_t *drive = to_ide_device(dev); | ||
| 26 | return sprintf(buf, "%s\n", ide_media_string(drive)); | ||
| 27 | } | ||
| 28 | |||
| 29 | static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, | ||
| 30 | char *buf) | ||
| 31 | { | ||
| 32 | ide_drive_t *drive = to_ide_device(dev); | ||
| 33 | return sprintf(buf, "%s\n", drive->name); | ||
| 34 | } | ||
| 35 | |||
| 36 | static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, | ||
| 37 | char *buf) | ||
| 38 | { | ||
| 39 | ide_drive_t *drive = to_ide_device(dev); | ||
| 40 | return sprintf(buf, "ide:m-%s\n", ide_media_string(drive)); | ||
| 41 | } | ||
| 42 | |||
| 43 | static ssize_t model_show(struct device *dev, struct device_attribute *attr, | ||
| 44 | char *buf) | ||
| 45 | { | ||
| 46 | ide_drive_t *drive = to_ide_device(dev); | ||
| 47 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_PROD]); | ||
| 48 | } | ||
| 49 | |||
| 50 | static ssize_t firmware_show(struct device *dev, struct device_attribute *attr, | ||
| 51 | char *buf) | ||
| 52 | { | ||
| 53 | ide_drive_t *drive = to_ide_device(dev); | ||
| 54 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_FW_REV]); | ||
| 55 | } | ||
| 56 | |||
| 57 | static ssize_t serial_show(struct device *dev, struct device_attribute *attr, | ||
| 58 | char *buf) | ||
| 59 | { | ||
| 60 | ide_drive_t *drive = to_ide_device(dev); | ||
| 61 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_SERNO]); | ||
| 62 | } | ||
| 63 | |||
| 64 | struct device_attribute ide_dev_attrs[] = { | ||
| 65 | __ATTR_RO(media), | ||
| 66 | __ATTR_RO(drivename), | ||
| 67 | __ATTR_RO(modalias), | ||
| 68 | __ATTR_RO(model), | ||
| 69 | __ATTR_RO(firmware), | ||
| 70 | __ATTR(serial, 0400, serial_show, NULL), | ||
| 71 | __ATTR(unload_heads, 0644, ide_park_show, ide_park_store), | ||
| 72 | __ATTR_NULL | ||
| 73 | }; | ||
| 74 | |||
| 75 | static ssize_t store_delete_devices(struct device *portdev, | ||
| 76 | struct device_attribute *attr, | ||
| 77 | const char *buf, size_t n) | ||
| 78 | { | ||
| 79 | ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||
| 80 | |||
| 81 | if (strncmp(buf, "1", n)) | ||
| 82 | return -EINVAL; | ||
| 83 | |||
| 84 | ide_port_unregister_devices(hwif); | ||
| 85 | |||
| 86 | return n; | ||
| 87 | }; | ||
| 88 | |||
| 89 | static DEVICE_ATTR(delete_devices, S_IWUSR, NULL, store_delete_devices); | ||
| 90 | |||
| 91 | static ssize_t store_scan(struct device *portdev, | ||
| 92 | struct device_attribute *attr, | ||
| 93 | const char *buf, size_t n) | ||
| 94 | { | ||
| 95 | ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||
| 96 | |||
| 97 | if (strncmp(buf, "1", n)) | ||
| 98 | return -EINVAL; | ||
| 99 | |||
| 100 | ide_port_unregister_devices(hwif); | ||
| 101 | ide_port_scan(hwif); | ||
| 102 | |||
| 103 | return n; | ||
| 104 | }; | ||
| 105 | |||
| 106 | static DEVICE_ATTR(scan, S_IWUSR, NULL, store_scan); | ||
| 107 | |||
| 108 | static struct device_attribute *ide_port_attrs[] = { | ||
| 109 | &dev_attr_delete_devices, | ||
| 110 | &dev_attr_scan, | ||
| 111 | NULL | ||
| 112 | }; | ||
| 113 | |||
| 114 | int ide_sysfs_register_port(ide_hwif_t *hwif) | ||
| 115 | { | ||
| 116 | int i, uninitialized_var(rc); | ||
| 117 | |||
| 118 | for (i = 0; ide_port_attrs[i]; i++) { | ||
| 119 | rc = device_create_file(hwif->portdev, ide_port_attrs[i]); | ||
| 120 | if (rc) | ||
| 121 | break; | ||
| 122 | } | ||
| 123 | |||
| 124 | return rc; | ||
| 125 | } | ||
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index f0f09f702e9..46a2d4ca812 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
| @@ -440,81 +440,13 @@ static int ide_bus_match(struct device *dev, struct device_driver *drv) | |||
| 440 | return 1; | 440 | return 1; |
| 441 | } | 441 | } |
| 442 | 442 | ||
| 443 | static char *media_string(ide_drive_t *drive) | ||
| 444 | { | ||
| 445 | switch (drive->media) { | ||
| 446 | case ide_disk: | ||
| 447 | return "disk"; | ||
| 448 | case ide_cdrom: | ||
| 449 | return "cdrom"; | ||
| 450 | case ide_tape: | ||
| 451 | return "tape"; | ||
| 452 | case ide_floppy: | ||
| 453 | return "floppy"; | ||
| 454 | case ide_optical: | ||
| 455 | return "optical"; | ||
| 456 | default: | ||
| 457 | return "UNKNOWN"; | ||
| 458 | } | ||
| 459 | } | ||
| 460 | |||
| 461 | static ssize_t media_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
| 462 | { | ||
| 463 | ide_drive_t *drive = to_ide_device(dev); | ||
| 464 | return sprintf(buf, "%s\n", media_string(drive)); | ||
| 465 | } | ||
| 466 | |||
| 467 | static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
| 468 | { | ||
| 469 | ide_drive_t *drive = to_ide_device(dev); | ||
| 470 | return sprintf(buf, "%s\n", drive->name); | ||
| 471 | } | ||
| 472 | |||
| 473 | static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
| 474 | { | ||
| 475 | ide_drive_t *drive = to_ide_device(dev); | ||
| 476 | return sprintf(buf, "ide:m-%s\n", media_string(drive)); | ||
| 477 | } | ||
| 478 | |||
| 479 | static ssize_t model_show(struct device *dev, struct device_attribute *attr, | ||
| 480 | char *buf) | ||
| 481 | { | ||
| 482 | ide_drive_t *drive = to_ide_device(dev); | ||
| 483 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_PROD]); | ||
| 484 | } | ||
| 485 | |||
| 486 | static ssize_t firmware_show(struct device *dev, struct device_attribute *attr, | ||
| 487 | char *buf) | ||
| 488 | { | ||
| 489 | ide_drive_t *drive = to_ide_device(dev); | ||
| 490 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_FW_REV]); | ||
| 491 | } | ||
| 492 | |||
| 493 | static ssize_t serial_show(struct device *dev, struct device_attribute *attr, | ||
| 494 | char *buf) | ||
| 495 | { | ||
| 496 | ide_drive_t *drive = to_ide_device(dev); | ||
| 497 | return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_SERNO]); | ||
| 498 | } | ||
| 499 | |||
| 500 | static struct device_attribute ide_dev_attrs[] = { | ||
| 501 | __ATTR_RO(media), | ||
| 502 | __ATTR_RO(drivename), | ||
| 503 | __ATTR_RO(modalias), | ||
| 504 | __ATTR_RO(model), | ||
| 505 | __ATTR_RO(firmware), | ||
| 506 | __ATTR(serial, 0400, serial_show, NULL), | ||
| 507 | __ATTR(unload_heads, 0644, ide_park_show, ide_park_store), | ||
| 508 | __ATTR_NULL | ||
| 509 | }; | ||
| 510 | |||
| 511 | static int ide_uevent(struct device *dev, struct kobj_uevent_env *env) | 443 | static int ide_uevent(struct device *dev, struct kobj_uevent_env *env) |
| 512 | { | 444 | { |
| 513 | ide_drive_t *drive = to_ide_device(dev); | 445 | ide_drive_t *drive = to_ide_device(dev); |
| 514 | 446 | ||
| 515 | add_uevent_var(env, "MEDIA=%s", media_string(drive)); | 447 | add_uevent_var(env, "MEDIA=%s", ide_media_string(drive)); |
| 516 | add_uevent_var(env, "DRIVENAME=%s", drive->name); | 448 | add_uevent_var(env, "DRIVENAME=%s", drive->name); |
| 517 | add_uevent_var(env, "MODALIAS=ide:m-%s", media_string(drive)); | 449 | add_uevent_var(env, "MODALIAS=ide:m-%s", ide_media_string(drive)); |
| 518 | return 0; | 450 | return 0; |
| 519 | } | 451 | } |
| 520 | 452 | ||
