LED support for QCA9980
Nathaniel Filardo
nwfilardo at gmail.com
Tue Oct 24 14:51:07 PDT 2017
Hi! You may find the following script I run on my ath10k board useful.
#!/bin/sh
DEVNAME=$1; shift
DEVPATH=/sys/class/net/${DEVNAME}/device
if [ ! -r ${DEVPATH}/vendor -o ! -r ${DEVPATH}/device ]; then
echo "Bad device name? No /vendor or /device sys file in ${DEVPATH}"
exit 1
fi
PCIID="$(cat ${DEVPATH}/vendor):$(cat ${DEVPATH}/device)"
if [ "0x168c:0x0040" != "${PCIID}" ]; then
echo "Bad PCI ID: ${PCIID}; bailing out!"
exit 1
fi
dopcimem() {
# echo pcimem ${DEVPATH}/resource0 $1 w $2 >&2
pcimem ${DEVPATH}/resource0 $1 w $2 | sed -ne 's/^Value at [^:]*:
\(.*\)$/\1/p'
}
ORIG18=$(dopcimem 0x85018)
ORIG00=$(dopcimem 0x85000)
case $1 in
on)
dopcimem 0x85018 $((${ORIG18} | 0x20000)) # init
dopcimem 0x85000 $((${ORIG00} & ~0x20000)) # active low
;;
off)
dopcimem 0x85000 $((${ORIG00} | 0x20000)) # inactive high
dopcimem 0x85018 $((${ORIG18} & ~0x20000)) # deinit
;;
*) echo "Dunno how to '$2'? Try 'on' or 'off'"
exit 1
;;
esac
Run as, for example, "./ath-leds.sh wlan0 on".
Cheers!
--nwf;
On Tue, Oct 24, 2017 at 5:32 PM, Tolga Cakir <cevelnet at gmail.com> wrote:
>> Thanks to some hero's sleuthing around a GPL source dump
>> (https://forum.openwrt.org/viewtopic.php?pid=336237#p336237) and a
>> later suggestion to try flipping bits from userspace (using
>> https://github.com/billfarrow/pcimem), I can report that, at least for
>> the two QCA9980s in my possession (within the TP-Link C2600 gateway I
>> have) that the speculation is correct: kicking on bit 17 (the value of
>> ATH_BEELINER_LED) in 0x85018 of resource0 makes bit 17 in 0x85000 an
>> active-low controller for the LEDs attached to the chip.
>
> Hi! I've got the Zyxel NBG6817, which uses QCA9984 SoCs - very similar
> to yours. I've investigated Zyxel's OEM firmware and also came across
> QCA9984 GPIO pin 17 beeing used for the WiFi 2.4G and 5G LEDs.
> Interestingly enough, Netgear R7800 also uses GPIO pin 17, according
> to their firmware sources. Unfortunately, I was not able to find out
> any address or verify your supplied address or find any other way to
> manipulate the WiFi SoC's GPIOs.
>
> I'm a hobby programmer and have worked on reverse-engineering USB
> devices and Linux kernel drivers in the past and am now interested in
> getting this to work. I'm familiar with the Linux LED API, but I'm
> completely new to networking / PCI / ath10k.
>
> What I need is a hint, how to cleanly access QCA9984 GPIOs (or atleast
> GPIO pin 17) within ath10k / kernel. Exposing that access to userspace
> via Linux LED API is not an issue - I can do that.
>
> Any ideas? I'm thankful for any help or hint I can get!
>
> Cheers,
> Tolga
More information about the ath10k
mailing list