Patch IMX audmux debugfs.

Bill Pringlemeir bpringle at sympatico.ca
Tue Nov 9 18:11:12 EST 2010


$ mount -t debugfs debugfs /sys/kernel/debug
$ cd /sys/kernel/debug/audmux
$ cat *
[crashes when accessing ssi7]

The index is one based, but the register map is zero based.  So the
ssi1 is actually sending info for ssi2.  Also, the ssi7 touches
non-existent data and can cause an exception (only registers sets 1-6
exist).

Alternatively, the MX31_AUDMUX_PORT6_SSI_PINS_6 and
MX27_AUDMUX_PPCR3_SSI_PINS_3 constants could be used for the loop
termination, but maybe that means conditionalization (and there are no
MX25 constants).

diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c
index f9e7cdb..0547145 100644
--- a/arch/arm/plat-mxc/audmux-v2.c
+++ b/arch/arm/plat-mxc/audmux-v2.c
@@ -66,7 +66,7 @@ static ssize_t audmux_read_file(struct file *file, char __user *user_buf,
 {
        ssize_t ret;
        char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-       int port = (int)file->private_data;
+       int port = ((int)file->private_data) - 1;
        u32 pdcr, ptcr;
 
        if (!buf)
@@ -150,7 +150,7 @@ static void audmux_debugfs_init(void)
                return;
        }
 
-       for (i = 1; i < 8; i++) {
+       for (i = 1; i < 7; i++) {
                snprintf(buf, sizeof(buf), "ssi%d", i);
                if (!debugfs_create_file(buf, 0444, audmux_debugfs_root,
                                         (void *)i, &audmux_debugfs_fops))



More information about the linux-arm-kernel mailing list