power: pm8xxx-ccadc: Add HTC register dump functions

HTC kernel version: villeu-jb-crc-3.4.10-ae8b65

Change-Id: Ibc2d03f4550bd04c58720994760a618d6001a241
diff --git a/drivers/power/pm8xxx-ccadc.c b/drivers/power/pm8xxx-ccadc.c
index c53bcd2..810ae54 100644
--- a/drivers/power/pm8xxx-ccadc.c
+++ b/drivers/power/pm8xxx-ccadc.c
@@ -688,6 +688,79 @@
 }
 DEFINE_SIMPLE_ATTRIBUTE(calc_fops, get_calc, NULL, "%lld\n");
 
+#ifdef CONFIG_MACH_HTC
+void dump_all(void)
+{
+	u64 val;
+	get_reg((void *)CCADC_ANA_PARAM, &val);
+	pr_info("CCADC_ANA_PARAM = 0x%02llx\n", val);
+	get_reg((void *)CCADC_DIG_PARAM, &val);
+	pr_info("CCADC_DIG_PARAM = 0x%02llx\n", val);
+	get_reg((void *)CCADC_RSV, &val);
+	pr_info("CCADC_RSV = 0x%02llx\n", val);
+	get_reg((void *)CCADC_DATA0, &val);
+	pr_info("CCADC_DATA0 = 0x%02llx\n", val);
+	get_reg((void *)CCADC_DATA1, &val);
+	pr_info("CCADC_DATA1 = 0x%02llx\n", val);
+	get_reg((void *)CCADC_OFFSET_TRIM1, &val);
+	pr_info("CCADC_OFFSET_TRIM1 = 0x%02llx\n", val);
+	get_reg((void *)CCADC_OFFSET_TRIM0, &val);
+	pr_info("CCADC_OFFSET_TRIM0 = 0x%02llx\n", val);
+	get_reg((void *)CCADC_FULLSCALE_TRIM1, &val);
+	pr_info("CCADC_FULLSCALE_TRIM1 = 0x%02llx\n", val);
+	get_reg((void *)CCADC_FULLSCALE_TRIM0, &val);
+	pr_info("CCADC_FULLSCALE_TRIM0 = 0x%02llx\n", val);
+}
+
+inline int pm8xxx_ccadc_dump_all(void)
+{
+	if (!the_chip) {
+		pr_err("called before init\n");
+		return -EINVAL;
+	}
+	dump_all();
+	return 0;
+}
+EXPORT_SYMBOL(pm8xxx_ccadc_dump_all);
+
+int pm8xxx_ccadc_get_attr_text(char *buf, int size)
+{
+	int len = 0;
+	u64 val = 0;
+
+	get_reg((void *)CCADC_ANA_PARAM, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_ANA_PARAM: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_DIG_PARAM, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_DIG_PARAM: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_RSV, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_RSV: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_DATA0, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_DATA0: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_DATA1, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_DATA1: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_OFFSET_TRIM1, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_OFFSET_TRIM1: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_OFFSET_TRIM0, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_OFFSET_TRIM0: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_FULLSCALE_TRIM1, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_FULLSCALE_TRIM1: 0x%02llx;\n", val);
+	get_reg((void *)CCADC_FULLSCALE_TRIM0, &val);
+	len += scnprintf(buf + len, size - len,
+			"CCADC_FULLSCALE_TRIM0: 0x%02llx;\n", val);
+
+	return len;
+}
+EXPORT_SYMBOL(pm8xxx_ccadc_get_attr_text);
+#endif
+
 static void create_debugfs_entries(struct pm8xxx_ccadc_chip *chip)
 {
 	chip->dent = debugfs_create_dir("pm8xxx-ccadc", NULL);
diff --git a/include/linux/mfd/pm8xxx/ccadc.h b/include/linux/mfd/pm8xxx/ccadc.h
index a29486f..3121998 100644
--- a/include/linux/mfd/pm8xxx/ccadc.h
+++ b/include/linux/mfd/pm8xxx/ccadc.h
@@ -76,6 +76,24 @@
  *
  */
 int pm8xxx_ccadc_get_battery_current(int *bat_current);
+
+#ifdef CONFIG_MACH_HTC
+/**
+ * pm8xxx_ccadc_dump_all - dump register contents to log
+ *
+ * RETURNS:	0
+ */
+int pm8xxx_ccadc_dump_all(void);
+
+/**
+ * pm8xxx_ccadc_get_attr_text - get registers contents as text string
+ * @buf:	The pointer to the buffer
+ * @size:	The size in bytes of the buffer
+ *
+ * RETURNS:	The length of the text string returned.
+ */
+int pm8xxx_ccadc_get_attr_text(char *buf, int size);
+#endif /* CONFIG_MACH_HTC */
 #else
 static inline s64 pm8xxx_cc_adjust_for_gain(s64 uv)
 {
@@ -88,6 +106,16 @@
 {
 	return -ENXIO;
 }
+#ifdef CONFIG_MACH_HTC
+static inline int pm8xxx_ccadc_dump_all(void)
+{
+	return -ENXIO;
+}
+static inline int pm8xxx_ccadc_get_attr_text(char *buf, int size)
+{
+	return -ENXIO;
+}
+#endif /* CONFIG_MACH_HTC */
 #endif
 
 #endif /* __PMIC8XXX_CCADC_H__ */