[PATCH] ath10k: Add the target register access and memory dump debugfs interface
Kalle Valo
kvalo at qca.qualcomm.com
Mon Nov 24 05:50:07 PST 2014
Yanbo Li <yanbol at qti.qualcomm.com> writes:
> The debugfs interface reg_addr®_val used to read and write the target
> register.
> The interface mmem_val used to dump the targer memory and also can be
> used to assign value to target memory
>
> The basic usage explain as below:
>
> Register read/write:
> reg_addr (the register address) (read&write)
> reg_value (the register value, output is ASCII) (read&write)
>
> Read operation:
> 1. Write the reg address to reg_addr
> IE: echo 0x100000 > reg_addr
> 2. Read the value from reg_value
> IE: cat reg_value
> Write operation:
> 1. Write the reg address to reg_addr IE: echo 0x100000 > reg_addr
> 2. Write the value to the reg_value IE: echo 0x2400 > reg_value
>
> Target memory dump:
> mem_value (the target memory, access with the length and start address
> (read&write)
> Read operation:
>
> 1: Read 4K(bs*count)) from address 0x400000(bs*skip)
> dd if=mem_value bs=4 count=1024 skip=1048576 | xxd -g1
>
> 2: Read 0x50000(bs*count) from address 0x400000(bs*skip)
> dd if=mem_value bs=4 count=81920 skip=1048576 | xxd -g1
>
> Write operation:
>
> 1: Write the 0x01020304 to address 0x400400(bs*seek)
> echo 0x01020304 | xxd -r | dd of=mem_value bs=4 seek=1048832
>
> 2: Read the memory and then write back after edit
> dd if=mem_value bs=4 count=1024 skip=1048576 > tmp.bin
> edit the tmp.bin
> dd if=tmp.bin of=mem_value bs=4 count=4 seek=1048576
>
> It suggests assign the 4 align number to bs, IE, 4, 8, 16 ....
> Cause the target memory width is 32bit
>
> Signed-off-by: Yanbo Li <yanbol at qti.qualcomm.com>
The commit log is quite hard to read due to formatting, but I can clean
that up.
> + spin_lock_bh(&ar->data_lock);
> + reg_addr = ar->debug.reg_addr;
> + spin_unlock_bh(&ar->data_lock);
[...]
> + spin_lock_bh(&ar->data_lock);
> + ar->debug.reg_addr = reg_addr;
> + spin_unlock_bh(&ar->data_lock);
[...]
> + spin_lock_bh(&ar->data_lock);
> + reg_addr = ar->debug.reg_addr;
> + spin_unlock_bh(&ar->data_lock);
[...]
> + spin_lock_bh(&ar->data_lock);
> + reg_addr = ar->debug.reg_addr;
> + spin_unlock_bh(&ar->data_lock);
I admit that I'm far from a locking expert, but does that make any
difference in the functionality?
--
Kalle Valo
More information about the ath10k
mailing list