[PATCH] tpm_infineon: Bugfix in PNPACPI-handling
[powerpc.git] / drivers / char / snsc.c
index ffb9143..261a41b 100644 (file)
@@ -357,6 +357,8 @@ static struct file_operations scdrv_fops = {
        .release =      scdrv_release,
 };
 
+static struct class *snsc_class;
+
 /*
  * scdrv_init
  *
@@ -372,8 +374,8 @@ scdrv_init(void)
        char *devnamep;
        struct sysctl_data_s *scd;
        void *salbuf;
-       struct class_simple *snsc_class;
        dev_t first_dev, dev;
+       nasid_t event_nasid = ia64_sn_get_console_nasid();
 
        if (alloc_chrdev_region(&first_dev, 0, numionodes,
                                SYSCTL_BASENAME) < 0) {
@@ -381,7 +383,7 @@ scdrv_init(void)
                       __FUNCTION__);
                return -ENODEV;
        }
-       snsc_class = class_simple_create(THIS_MODULE, SYSCTL_BASENAME);
+       snsc_class = class_create(THIS_MODULE, SYSCTL_BASENAME);
 
        for (cnode = 0; cnode < numionodes; cnode++) {
                        geoid = cnodeid_get_geoid(cnode);
@@ -435,12 +437,19 @@ scdrv_init(void)
                                continue;
                        }
 
-                       class_simple_device_add(snsc_class, dev, NULL,
+                       class_device_create(snsc_class, dev, NULL,
                                                "%s", devname);
 
                        ia64_sn_irtr_intr_enable(scd->scd_nasid,
                                                 0 /*ignored */ ,
                                                 SAL_IROUTER_INTR_RECV);
+
+                        /* on the console nasid, prepare to receive
+                         * system controller environmental events
+                         */
+                        if(scd->scd_nasid == event_nasid) {
+                                scdrv_event_init(scd);
+                        }
        }
        return 0;
 }