rk_tsadc breaks (my) Rock64
Peter Jeremy
peter at rulingia.com
Mon Dec 2 11:13:48 UTC 2019
On 2019-Dec-01 22:07:16 +1100, Peter Jeremy <peter at rulingia.com> wrote:
>r355173 added code to read the Rockchip temperature sensors. Unfortunately,
>this breaks on my Rock64. I've tried to understand what's going wrong but
>haven't managed to make much headway. It looks like there some configuration
>missing from syscon that tsadc needs but I'm not sure what (and I don't really
>understand what syscon is doing). I'd appreciate any insights.
I've added a pile of printf's and done some more digging and have made some
progress.
Firstly, I've found that the syscon at ff100000 FDT entry attaches as two
distinct devices:
rk_grf0: <RockChip General Register Files> mem 0xff100000-0xff100fff on ofwbus0
(via compatible = "rockchip,rk3328-grf")
simple_mfd0: <Simple MFD (Multi-Functions Device)> mem 0xff450000-0xff45ffff on ofwbus0
(via compatible = "simple-mfd")
Based on the traceback going via simple_mfd_syscon_write_4(), I had assumed
that tsadc_attach() was using the latter device but when I added code to
print structure addresses, I discovered it was the former.
This makes the problem clearer: rk_grf0 requests and is allocated 4KiB
memory ("reg = <0x0 0xff100000 0x0 0x1000>;" in the FDT and
"mem 0xff100000-0xff100fff" in the device attach message above) but the
tsadc_init() code is doing:
SYSCON_WRITE_4(sc->grf, GRF_TSADC_TESTBIT_L,
GRF_TSADC_VCM_EN_L);
with
#define GRF_TSADC_TESTBIT_L 0x0e648
and that offset is well outside the 4KiB allocated to the device.
(On the positive side, a panic makes the problem a lot clearer than
writing to a random device location would have been).
Ganbold's followup shows that the RK3399 allocates 64KiB to the syscon
device so the equivalent write is valid on a RK3399.
I suspect the problem is that the following defines are only valid for
the RK3399 since I can't find any matches to either the names or offsets
in the following:
#define GRF_SARADC_TESTBIT 0x0e644
#define GRF_TSADC_TESTBIT_L 0x0e648
#define GRF_TSADC_TESTBIT_H 0x0e64c
Unfortunately, that also means I currently have no idea what the RK3328
equivalents to those offsets are.
--
Peter Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20191202/f5b28e71/attachment.sig>
More information about the freebsd-arm
mailing list