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>
This commit is contained in:
		
							parent
							
								
									24630dc68a
								
							
						
					
					
						commit
						ebdab07dad
					
				| @ -5,7 +5,7 @@ | ||||
| EXTRA_CFLAGS				+= -Idrivers/ide | ||||
| 
 | ||||
| ide-core-y += ide.o ide-ioctls.o ide-io.o ide-iops.o ide-lib.o ide-probe.o \
 | ||||
| 	      ide-taskfile.o ide-pm.o ide-park.o ide-pio-blacklist.o | ||||
| 	      ide-taskfile.o ide-pm.o ide-park.o ide-pio-blacklist.o ide-sysfs.o | ||||
| 
 | ||||
| # core IDE code
 | ||||
| ide-core-$(CONFIG_IDE_TIMINGS)		+= ide-timings.o | ||||
|  | ||||
| @ -1420,58 +1420,6 @@ static void ide_port_cable_detect(ide_hwif_t *hwif) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static ssize_t store_delete_devices(struct device *portdev, | ||||
| 				    struct device_attribute *attr, | ||||
| 				    const char *buf, size_t n) | ||||
| { | ||||
| 	ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||||
| 
 | ||||
| 	if (strncmp(buf, "1", n)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	ide_port_unregister_devices(hwif); | ||||
| 
 | ||||
| 	return n; | ||||
| }; | ||||
| 
 | ||||
| static DEVICE_ATTR(delete_devices, S_IWUSR, NULL, store_delete_devices); | ||||
| 
 | ||||
| static ssize_t store_scan(struct device *portdev, | ||||
| 			  struct device_attribute *attr, | ||||
| 			  const char *buf, size_t n) | ||||
| { | ||||
| 	ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||||
| 
 | ||||
| 	if (strncmp(buf, "1", n)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	ide_port_unregister_devices(hwif); | ||||
| 	ide_port_scan(hwif); | ||||
| 
 | ||||
| 	return n; | ||||
| }; | ||||
| 
 | ||||
| static DEVICE_ATTR(scan, S_IWUSR, NULL, store_scan); | ||||
| 
 | ||||
| static struct device_attribute *ide_port_attrs[] = { | ||||
| 	&dev_attr_delete_devices, | ||||
| 	&dev_attr_scan, | ||||
| 	NULL | ||||
| }; | ||||
| 
 | ||||
| static int ide_sysfs_register_port(ide_hwif_t *hwif) | ||||
| { | ||||
| 	int i, uninitialized_var(rc); | ||||
| 
 | ||||
| 	for (i = 0; ide_port_attrs[i]; i++) { | ||||
| 		rc = device_create_file(hwif->portdev, ide_port_attrs[i]); | ||||
| 		if (rc) | ||||
| 			break; | ||||
| 	} | ||||
| 
 | ||||
| 	return rc; | ||||
| } | ||||
| 
 | ||||
| static unsigned int ide_indexes; | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
							
								
								
									
										125
									
								
								drivers/ide/ide-sysfs.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								drivers/ide/ide-sysfs.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,125 @@ | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/ide.h> | ||||
| 
 | ||||
| char *ide_media_string(ide_drive_t *drive) | ||||
| { | ||||
| 	switch (drive->media) { | ||||
| 	case ide_disk: | ||||
| 		return "disk"; | ||||
| 	case ide_cdrom: | ||||
| 		return "cdrom"; | ||||
| 	case ide_tape: | ||||
| 		return "tape"; | ||||
| 	case ide_floppy: | ||||
| 		return "floppy"; | ||||
| 	case ide_optical: | ||||
| 		return "optical"; | ||||
| 	default: | ||||
| 		return "UNKNOWN"; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static ssize_t media_show(struct device *dev, struct device_attribute *attr, | ||||
| 			  char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", ide_media_string(drive)); | ||||
| } | ||||
| 
 | ||||
| static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, | ||||
| 			      char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", drive->name); | ||||
| } | ||||
| 
 | ||||
| static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, | ||||
| 			     char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "ide:m-%s\n", ide_media_string(drive)); | ||||
| } | ||||
| 
 | ||||
| static ssize_t model_show(struct device *dev, struct device_attribute *attr, | ||||
| 			  char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_PROD]); | ||||
| } | ||||
| 
 | ||||
| static ssize_t firmware_show(struct device *dev, struct device_attribute *attr, | ||||
| 			     char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_FW_REV]); | ||||
| } | ||||
| 
 | ||||
| static ssize_t serial_show(struct device *dev, struct device_attribute *attr, | ||||
| 			   char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_SERNO]); | ||||
| } | ||||
| 
 | ||||
| struct device_attribute ide_dev_attrs[] = { | ||||
| 	__ATTR_RO(media), | ||||
| 	__ATTR_RO(drivename), | ||||
| 	__ATTR_RO(modalias), | ||||
| 	__ATTR_RO(model), | ||||
| 	__ATTR_RO(firmware), | ||||
| 	__ATTR(serial, 0400, serial_show, NULL), | ||||
| 	__ATTR(unload_heads, 0644, ide_park_show, ide_park_store), | ||||
| 	__ATTR_NULL | ||||
| }; | ||||
| 
 | ||||
| static ssize_t store_delete_devices(struct device *portdev, | ||||
| 				    struct device_attribute *attr, | ||||
| 				    const char *buf, size_t n) | ||||
| { | ||||
| 	ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||||
| 
 | ||||
| 	if (strncmp(buf, "1", n)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	ide_port_unregister_devices(hwif); | ||||
| 
 | ||||
| 	return n; | ||||
| }; | ||||
| 
 | ||||
| static DEVICE_ATTR(delete_devices, S_IWUSR, NULL, store_delete_devices); | ||||
| 
 | ||||
| static ssize_t store_scan(struct device *portdev, | ||||
| 			  struct device_attribute *attr, | ||||
| 			  const char *buf, size_t n) | ||||
| { | ||||
| 	ide_hwif_t *hwif = dev_get_drvdata(portdev); | ||||
| 
 | ||||
| 	if (strncmp(buf, "1", n)) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	ide_port_unregister_devices(hwif); | ||||
| 	ide_port_scan(hwif); | ||||
| 
 | ||||
| 	return n; | ||||
| }; | ||||
| 
 | ||||
| static DEVICE_ATTR(scan, S_IWUSR, NULL, store_scan); | ||||
| 
 | ||||
| static struct device_attribute *ide_port_attrs[] = { | ||||
| 	&dev_attr_delete_devices, | ||||
| 	&dev_attr_scan, | ||||
| 	NULL | ||||
| }; | ||||
| 
 | ||||
| int ide_sysfs_register_port(ide_hwif_t *hwif) | ||||
| { | ||||
| 	int i, uninitialized_var(rc); | ||||
| 
 | ||||
| 	for (i = 0; ide_port_attrs[i]; i++) { | ||||
| 		rc = device_create_file(hwif->portdev, ide_port_attrs[i]); | ||||
| 		if (rc) | ||||
| 			break; | ||||
| 	} | ||||
| 
 | ||||
| 	return rc; | ||||
| } | ||||
| @ -440,81 +440,13 @@ static int ide_bus_match(struct device *dev, struct device_driver *drv) | ||||
| 	return 1; | ||||
| } | ||||
| 
 | ||||
| static char *media_string(ide_drive_t *drive) | ||||
| { | ||||
| 	switch (drive->media) { | ||||
| 	case ide_disk: | ||||
| 		return "disk"; | ||||
| 	case ide_cdrom: | ||||
| 		return "cdrom"; | ||||
| 	case ide_tape: | ||||
| 		return "tape"; | ||||
| 	case ide_floppy: | ||||
| 		return "floppy"; | ||||
| 	case ide_optical: | ||||
| 		return "optical"; | ||||
| 	default: | ||||
| 		return "UNKNOWN"; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static ssize_t media_show(struct device *dev, struct device_attribute *attr, char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", media_string(drive)); | ||||
| } | ||||
| 
 | ||||
| static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", drive->name); | ||||
| } | ||||
| 
 | ||||
| static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "ide:m-%s\n", media_string(drive)); | ||||
| } | ||||
| 
 | ||||
| static ssize_t model_show(struct device *dev, struct device_attribute *attr, | ||||
| 			  char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_PROD]); | ||||
| } | ||||
| 
 | ||||
| static ssize_t firmware_show(struct device *dev, struct device_attribute *attr, | ||||
| 			     char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_FW_REV]); | ||||
| } | ||||
| 
 | ||||
| static ssize_t serial_show(struct device *dev, struct device_attribute *attr, | ||||
| 			   char *buf) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 	return sprintf(buf, "%s\n", (char *)&drive->id[ATA_ID_SERNO]); | ||||
| } | ||||
| 
 | ||||
| static struct device_attribute ide_dev_attrs[] = { | ||||
| 	__ATTR_RO(media), | ||||
| 	__ATTR_RO(drivename), | ||||
| 	__ATTR_RO(modalias), | ||||
| 	__ATTR_RO(model), | ||||
| 	__ATTR_RO(firmware), | ||||
| 	__ATTR(serial, 0400, serial_show, NULL), | ||||
| 	__ATTR(unload_heads, 0644, ide_park_show, ide_park_store), | ||||
| 	__ATTR_NULL | ||||
| }; | ||||
| 
 | ||||
| static int ide_uevent(struct device *dev, struct kobj_uevent_env *env) | ||||
| { | ||||
| 	ide_drive_t *drive = to_ide_device(dev); | ||||
| 
 | ||||
| 	add_uevent_var(env, "MEDIA=%s", media_string(drive)); | ||||
| 	add_uevent_var(env, "MEDIA=%s", ide_media_string(drive)); | ||||
| 	add_uevent_var(env, "DRIVENAME=%s", drive->name); | ||||
| 	add_uevent_var(env, "MODALIAS=ide:m-%s", media_string(drive)); | ||||
| 	add_uevent_var(env, "MODALIAS=ide:m-%s", ide_media_string(drive)); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1533,6 +1533,7 @@ void ide_unregister_region(struct gendisk *); | ||||
| void ide_undecoded_slave(ide_drive_t *); | ||||
| 
 | ||||
| void ide_port_apply_params(ide_hwif_t *); | ||||
| int ide_sysfs_register_port(ide_hwif_t *); | ||||
| 
 | ||||
| struct ide_host *ide_host_alloc(const struct ide_port_info *, hw_regs_t **); | ||||
| void ide_host_free(struct ide_host *); | ||||
| @ -1627,6 +1628,9 @@ extern struct mutex ide_cfg_mtx; | ||||
| 
 | ||||
| #define local_irq_set(flags)	do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0) | ||||
| 
 | ||||
| char *ide_media_string(ide_drive_t *); | ||||
| 
 | ||||
| extern struct device_attribute ide_dev_attrs[]; | ||||
| extern struct bus_type ide_bus_type; | ||||
| extern struct class *ide_port_class; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user