mfd: add #ifdef CONFIG_DEBUG_FS guard for ab8500_debug_resources
[pandora-kernel.git] / drivers / mfd / ab8500-core.c
index 387705e..d3d572b 100644 (file)
@@ -92,6 +92,8 @@
 #define AB8500_REV_REG                 0x80
 #define AB8500_SWITCH_OFF_STATUS       0x00
 
+#define AB8500_TURN_ON_STATUS          0x00
+
 /*
  * Map interrupt numbers to the LATCH and MASK register offsets, Interrupt
  * numbers are indexed into this array with (num / 8).
@@ -293,6 +295,7 @@ static struct irq_chip ab8500_irq_chip = {
        .irq_bus_lock           = ab8500_irq_lock,
        .irq_bus_sync_unlock    = ab8500_irq_sync_unlock,
        .irq_mask               = ab8500_irq_mask,
+       .irq_disable            = ab8500_irq_mask,
        .irq_unmask             = ab8500_irq_unmask,
 };
 
@@ -617,6 +620,7 @@ static struct resource __devinitdata ab8500_fg_resources[] = {
 
 static struct resource __devinitdata ab8500_chargalg_resources[] = {};
 
+#ifdef CONFIG_DEBUG_FS
 static struct resource __devinitdata ab8500_debug_resources[] = {
        {
                .name   = "IRQ_FIRST",
@@ -631,6 +635,7 @@ static struct resource __devinitdata ab8500_debug_resources[] = {
                .flags  = IORESOURCE_IRQ,
        },
 };
+#endif
 
 static struct resource __devinitdata ab8500_usb_resources[] = {
        {
@@ -811,12 +816,40 @@ static ssize_t show_switch_off_status(struct device *dev,
        return sprintf(buf, "%#x\n", value);
 }
 
+/*
+ * ab8500 has turned on due to (TURN_ON_STATUS):
+ * 0x01 PORnVbat
+ * 0x02 PonKey1dbF
+ * 0x04 PonKey2dbF
+ * 0x08 RTCAlarm
+ * 0x10 MainChDet
+ * 0x20 VbusDet
+ * 0x40 UsbIDDetect
+ * 0x80 Reserved
+ */
+static ssize_t show_turn_on_status(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       int ret;
+       u8 value;
+       struct ab8500 *ab8500;
+
+       ab8500 = dev_get_drvdata(dev);
+       ret = get_register_interruptible(ab8500, AB8500_SYS_CTRL1_BLOCK,
+               AB8500_TURN_ON_STATUS, &value);
+       if (ret < 0)
+               return ret;
+       return sprintf(buf, "%#x\n", value);
+}
+
 static DEVICE_ATTR(chip_id, S_IRUGO, show_chip_id, NULL);
 static DEVICE_ATTR(switch_off_status, S_IRUGO, show_switch_off_status, NULL);
+static DEVICE_ATTR(turn_on_status, S_IRUGO, show_turn_on_status, NULL);
 
 static struct attribute *ab8500_sysfs_entries[] = {
        &dev_attr_chip_id.attr,
        &dev_attr_switch_off_status.attr,
+       &dev_attr_turn_on_status.attr,
        NULL,
 };
 
@@ -843,11 +876,11 @@ int __devinit ab8500_init(struct ab8500 *ab8500)
                return ret;
 
        switch (value) {
-       case AB8500_CUTEARLY:
        case AB8500_CUT1P0:
        case AB8500_CUT1P1:
        case AB8500_CUT2P0:
        case AB8500_CUT3P0:
+       case AB8500_CUT3P3:
                dev_info(ab8500->dev, "detected chip, revision: %#x\n", value);
                break;
        default: