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__ */