mfd: ab8500-debug: Add register map for ab8540.
authorLee Jones <lee.jones@linaro.org>
Mon, 19 Nov 2012 11:20:03 +0000 (12:20 +0100)
committerLee Jones <lee.jones@linaro.org>
Thu, 7 Mar 2013 04:29:10 +0000 (12:29 +0800)
Required to read out correct debug information from the AB chip.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/ab8500-debugfs.c

index 4779e2f..862dbfe 100644 (file)
@@ -846,6 +846,422 @@ struct ab8500_prcmu_ranges ab8505_debug_ranges[AB8500_NUM_BANKS] = {
        },
 };
 
+struct ab8500_prcmu_ranges ab8540_debug_ranges[AB8500_NUM_BANKS] = {
+       [AB8500_M_FSM_RANK] = {
+               .num_ranges = 1,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x0B,
+                       },
+               },
+       },
+       [AB8500_SYS_CTRL1_BLOCK] = {
+               .num_ranges = 6,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x04,
+                       },
+                       {
+                               .first = 0x42,
+                               .last = 0x42,
+                       },
+                       {
+                               .first = 0x50,
+                               .last = 0x54,
+                       },
+                       {
+                               .first = 0x57,
+                               .last = 0x57,
+                       },
+                       {
+                               .first = 0x80,
+                               .last = 0x83,
+                       },
+                       {
+                               .first = 0x90,
+                               .last = 0x90,
+                       },
+               },
+       },
+       [AB8500_SYS_CTRL2_BLOCK] = {
+               .num_ranges = 5,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x0D,
+                       },
+                       {
+                               .first = 0x0F,
+                               .last = 0x10,
+                       },
+                       {
+                               .first = 0x20,
+                               .last = 0x21,
+                       },
+                       {
+                               .first = 0x32,
+                               .last = 0x3C,
+                       },
+                       {
+                               .first = 0x40,
+                               .last = 0x42,
+                       },
+               },
+       },
+       [AB8500_REGU_CTRL1] = {
+               .num_ranges = 4,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x03,
+                               .last = 0x15,
+                       },
+                       {
+                               .first = 0x20,
+                               .last = 0x20,
+                       },
+                       {
+                               .first = 0x80,
+                               .last = 0x85,
+                       },
+                       {
+                               .first = 0x87,
+                               .last = 0x88,
+                       },
+               },
+       },
+       [AB8500_REGU_CTRL2] = {
+               .num_ranges = 8,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x06,
+                       },
+                       {
+                               .first = 0x08,
+                               .last = 0x15,
+                       },
+                       {
+                               .first = 0x17,
+                               .last = 0x19,
+                       },
+                       {
+                               .first = 0x1B,
+                               .last = 0x1D,
+                       },
+                       {
+                               .first = 0x1F,
+                               .last = 0x2F,
+                       },
+                       {
+                               .first = 0x31,
+                               .last = 0x3A,
+                       },
+                       {
+                               .first = 0x43,
+                               .last = 0x44,
+                       },
+                       {
+                               .first = 0x48,
+                               .last = 0x49,
+                       },
+               },
+       },
+       [AB8500_USB] = {
+               .num_ranges = 3,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x80,
+                               .last = 0x83,
+                       },
+                       {
+                               .first = 0x87,
+                               .last = 0x8A,
+                       },
+                       {
+                               .first = 0x91,
+                               .last = 0x94,
+                       },
+               },
+       },
+       [AB8500_TVOUT] = {
+               .num_ranges = 0,
+               .range = NULL
+       },
+       [AB8500_DBI] = {
+               .num_ranges = 4,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x07,
+                       },
+                       {
+                               .first = 0x10,
+                               .last = 0x11,
+                       },
+                       {
+                               .first = 0x20,
+                               .last = 0x21,
+                       },
+                       {
+                               .first = 0x30,
+                               .last = 0x43,
+                       },
+               },
+       },
+       [AB8500_ECI_AV_ACC] = {
+               .num_ranges = 2,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x03,
+                       },
+                       {
+                               .first = 0x80,
+                               .last = 0x82,
+                       },
+               },
+       },
+       [AB8500_RESERVED] = {
+               .num_ranges = 0,
+               .range = NULL,
+       },
+       [AB8500_GPADC] = {
+               .num_ranges = 4,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x01,
+                       },
+                       {
+                               .first = 0x04,
+                               .last = 0x06,
+                       },
+                       {
+                               .first = 0x09,
+                               .last = 0x0A,
+                       },
+                       {
+                               .first = 0x10,
+                               .last = 0x14,
+                       },
+               },
+       },
+       [AB8500_CHARGER] = {
+               .num_ranges = 10,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x00,
+                       },
+                       {
+                               .first = 0x02,
+                               .last = 0x05,
+                       },
+                       {
+                               .first = 0x40,
+                               .last = 0x44,
+                       },
+                       {
+                               .first = 0x50,
+                               .last = 0x57,
+                       },
+                       {
+                               .first = 0x60,
+                               .last = 0x60,
+                       },
+                       {
+                               .first = 0x70,
+                               .last = 0x70,
+                       },
+                       {
+                               .first = 0xA0,
+                               .last = 0xA9,
+                       },
+                       {
+                               .first = 0xAF,
+                               .last = 0xB2,
+                       },
+                       {
+                               .first = 0xC0,
+                               .last = 0xC6,
+                       },
+                       {
+                               .first = 0xF5,
+                               .last = 0xF5,
+                       },
+               },
+       },
+       [AB8500_GAS_GAUGE] = {
+               .num_ranges = 3,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x00,
+                       },
+                       {
+                               .first = 0x07,
+                               .last = 0x0A,
+                       },
+                       {
+                               .first = 0x10,
+                               .last = 0x14,
+                       },
+               },
+       },
+       [AB8500_AUDIO] = {
+               .num_ranges = 1,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x9f,
+                       },
+               },
+       },
+       [AB8500_INTERRUPT] = {
+               .num_ranges = 6,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x05,
+                       },
+                       {
+                               .first = 0x0B,
+                               .last = 0x0D,
+                       },
+                       {
+                               .first = 0x12,
+                               .last = 0x20,
+                       },
+                       /* Latch registers should not be read here */
+                       {
+                               .first = 0x40,
+                               .last = 0x45,
+                       },
+                       {
+                               .first = 0x4B,
+                               .last = 0x4D,
+                       },
+                       {
+                               .first = 0x52,
+                               .last = 0x60,
+                       },
+                       /* LatchHier registers should not be read here */
+               },
+       },
+       [AB8500_RTC] = {
+               .num_ranges = 3,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x07,
+                       },
+                       {
+                               .first = 0x0B,
+                               .last = 0x18,
+                       },
+                       {
+                               .first = 0x20,
+                               .last = 0x25,
+                       },
+               },
+       },
+       [AB8500_MISC] = {
+               .num_ranges = 9,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x06,
+                       },
+                       {
+                               .first = 0x10,
+                               .last = 0x16,
+                       },
+                       {
+                               .first = 0x20,
+                               .last = 0x26,
+                       },
+                       {
+                               .first = 0x30,
+                               .last = 0x36,
+                       },
+                       {
+                               .first = 0x40,
+                               .last = 0x49,
+                       },
+                       {
+                               .first = 0x50,
+                               .last = 0x50,
+                       },
+                       {
+                               .first = 0x60,
+                               .last = 0x6B,
+                       },
+                       {
+                               .first = 0x70,
+                               .last = 0x74,
+                       },
+                       {
+                               .first = 0x80,
+                               .last = 0x82,
+                       },
+               },
+       },
+       [AB8500_DEVELOPMENT] = {
+               .num_ranges = 3,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x01,
+                       },
+                       {
+                               .first = 0x06,
+                               .last = 0x06,
+                       },
+                       {
+                               .first = 0x10,
+                               .last = 0x21,
+                       },
+               },
+       },
+       [AB8500_DEBUG] = {
+               .num_ranges = 3,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x01,
+                               .last = 0x0C,
+                       },
+                       {
+                               .first = 0x0E,
+                               .last = 0x11,
+                       },
+                       {
+                               .first = 0x80,
+                               .last = 0x81,
+                       },
+               },
+       },
+       [AB8500_PROD_TEST] = {
+               .num_ranges = 0,
+               .range = NULL,
+       },
+       [AB8500_STE_TEST] = {
+               .num_ranges = 0,
+               .range = NULL,
+       },
+       [AB8500_OTP_EMUL] = {
+               .num_ranges = 1,
+               .range = (struct ab8500_reg_range[]) {
+                       {
+                               .first = 0x00,
+                               .last = 0x3F,
+                       },
+               },
+       },
+};
+
+
 static irqreturn_t ab8500_debug_handler(int irq, void *data)
 {
        char buf[16];
@@ -937,7 +1353,7 @@ static int ab8500_print_all_banks(struct seq_file *s, void *p)
 
        seq_printf(s, AB8500_NAME_STRING " register values:\n");
 
-       for (i = 1; i < AB8500_NUM_BANKS; i++) {
+       for (i = 0; i < AB8500_NUM_BANKS; i++) {
                err = seq_printf(s, " bank 0x%02X:\n", i);
 
                ab8500_registers_print(dev, i, s);
@@ -979,7 +1395,7 @@ void ab8500_dump_all_banks_to_mem(void)
        pr_info("Saving all ABB registers at \"ab8500_complete_register_dump\" "
                "for crash analyze.\n");
 
-       for (bank = 1; bank < AB8500_NUM_BANKS; bank++) {
+       for (bank = 0; bank < AB8500_NUM_BANKS; bank++) {
                for (i = 0; i < debug_ranges[bank].num_ranges; i++) {
                        u8 reg;
 
@@ -2653,7 +3069,7 @@ static int ab8500_debug_probe(struct platform_device *plf)
                debug_ranges = ab8505_debug_ranges;
                num_interrupt_lines = AB9540_NR_IRQS;
        } else if (is_ab8540(ab8500)) {
-               debug_ranges = ab8505_debug_ranges;
+               debug_ranges = ab8540_debug_ranges;
                num_interrupt_lines = AB8540_NR_IRQS;
        }