mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
[SCSI] dpt_i2o: sysfs code
Create a /sys/class/dpt_i2o directory and populate it with dptiN directories. Each dptiN directory contains a "dev" file that makes udev create /dev/dptiN Signed-off-by: Miquel van Smoorenburg <miquels@cistron.nl> Acked-by: Mark Salyzyn <Mark_Salyzyn@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
62ac5aedc5
commit
1ed4391095
1 changed files with 26 additions and 0 deletions
|
@ -111,6 +111,8 @@ static int sys_tbl_len;
|
|||
static adpt_hba* hba_chain = NULL;
|
||||
static int hba_count = 0;
|
||||
|
||||
static struct class *adpt_sysfs_class;
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
static long compat_adpt_ioctl(struct file *, unsigned int, unsigned long);
|
||||
#endif
|
||||
|
@ -254,6 +256,12 @@ static int adpt_detect(struct scsi_host_template* sht)
|
|||
adpt_inquiry(pHba);
|
||||
}
|
||||
|
||||
adpt_sysfs_class = class_create(THIS_MODULE, "dpt_i2o");
|
||||
if (IS_ERR(adpt_sysfs_class)) {
|
||||
printk(KERN_WARNING"dpti: unable to create dpt_i2o class\n");
|
||||
adpt_sysfs_class = NULL;
|
||||
}
|
||||
|
||||
for (pHba = hba_chain; pHba; pHba = pHba->next) {
|
||||
if (adpt_scsi_host_alloc(pHba, sht) < 0){
|
||||
adpt_i2o_delete_hba(pHba);
|
||||
|
@ -261,6 +269,16 @@ static int adpt_detect(struct scsi_host_template* sht)
|
|||
}
|
||||
pHba->initialized = TRUE;
|
||||
pHba->state &= ~DPTI_STATE_RESET;
|
||||
if (adpt_sysfs_class) {
|
||||
struct device *dev = device_create(adpt_sysfs_class,
|
||||
NULL, MKDEV(DPTI_I2O_MAJOR, pHba->unit),
|
||||
"dpti%d", pHba->unit);
|
||||
if (IS_ERR(dev)) {
|
||||
printk(KERN_WARNING"dpti%d: unable to "
|
||||
"create device in dpt_i2o class\n",
|
||||
pHba->unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Register our control device node
|
||||
|
@ -1212,8 +1230,16 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba)
|
|||
pci_dev_put(pHba->pDev);
|
||||
kfree(pHba);
|
||||
|
||||
if (adpt_sysfs_class)
|
||||
device_destroy(adpt_sysfs_class,
|
||||
MKDEV(DPTI_I2O_MAJOR, pHba->unit));
|
||||
|
||||
if(hba_count <= 0){
|
||||
unregister_chrdev(DPTI_I2O_MAJOR, DPT_DRIVER);
|
||||
if (adpt_sysfs_class) {
|
||||
class_destroy(adpt_sysfs_class);
|
||||
adpt_sysfs_class = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue