rk_tsadc breaks (my) Rock64
Peter Jeremy
peter at rulingia.com
Sun Dec 1 11:07:40 UTC 2019
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.
Relevant extract from the dmesg:
simple_mfd0: <Simple MFD (Multi-Functions Device)> mem 0xff450000-0xff45ffff on ofwbus0
...
rk_tsadc0: <RockChip temperature sensors> mem 0xff250000-0xff2500ff irq 22 on ofwbus0
rk_tsadc0: nclocks=1, nparents=-1
rk_tsadc0: Set clk_tsadc to 50000
panic: data abort with spinlock held
cpuid = 0
time = 1
KDB: stack backtrace:
...
data_abort() at do_el1h_sync+0x144
pc = 0xffff00000053f590 lr = 0xffff00000053e8c8
sp = 0xffff000000010530 fp = 0xffff000000010560
do_el1h_sync() at handle_el1h_sync+0x78
pc = 0xffff00000053e8c8 lr = 0xffff000000525078
sp = 0xffff000000010570 fp = 0xffff000000010680
handle_el1h_sync() at simple_mfd_syscon_write_4+0x60
pc = 0xffff000000525078 lr = 0xffff0000000fb028
sp = 0xffff000000010690 fp = 0xffff000000010740
simple_mfd_syscon_write_4() at tsadc_attach+0x44c
pc = 0xffff0000000fb028 lr = 0xffff000000553b58
sp = 0xffff000000010750 fp = 0xffff0000000107c0
tsadc_attach() at device_attach+0x3e0
pc = 0xffff000000553b58 lr = 0xffff00000028ad1c
sp = 0xffff0000000107d0 fp = 0xffff000000010830
device_attach() at bus_generic_new_pass+0x12c
pc = 0xffff00000028ad1c lr = 0xffff00000028cb58
sp = 0xffff000000010840 fp = 0xffff000000010870
...
Stopped at generic_bs_w_4: undefined b8226823
Relevant extract from FDT:
syscon at ff100000 {
compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
reg = <0x0 0xff100000 0x0 0x1000>;
#address-cells = <0x1>;
#size-cells = <0x1>;
phandle = <0x13>;
io-domains {
compatible = "rockchip,rk3328-io-voltage-domain";
status = "okay";
vccio1-supply = <0x20>;
vccio2-supply = <0x22>;
vccio3-supply = <0x20>;
vccio4-supply = <0x21>;
vccio5-supply = <0x20>;
vccio6-supply = <0x20>;
pmuio-supply = <0x20>;
phandle = <0x14>;
};
grf-gpio {
compatible = "rockchip,rk3328-grf-gpio";
gpio-controller;
#gpio-cells = <0x2>;
phandle = <0x15>;
};
power-controller {
compatible = "rockchip,rk3328-power-controller";
#power-domain-cells = <0x1>;
#address-cells = <0x1>;
#size-cells = <0x0>;
phandle = <0x16>;
pd_hevc at 6 {
reg = <0x6>;
};
pd_video at 5 {
reg = <0x5>;
};
pd_vpu at 8 {
reg = <0x8>;
};
};
reboot-mode {
compatible = "syscon-reboot-mode";
offset = <0x5c8>;
mode-normal = <0x5242c300>;
mode-recovery = <0x5242c303>;
mode-bootloader = <0x5242c309>;
mode-loader = <0x5242c301>;
};
};
...
tsadc at ff250000 {
compatible = "rockchip,rk3328-tsadc";
reg = <0x0 0xff250000 0x0 0x100>;
interrupts = <0x0 0x3a 0x4>;
assigned-clocks = <0x46 0x24>;
assigned-clock-rates = <0xc350>;
clocks = <0x46 0x24 0x46 0xd5>;
clock-names = "tsadc", "apb_pclk";
pinctrl-names = "init", "default", "sleep";
pinctrl-0 = <0x7c>;
pinctrl-1 = <0x7d>;
pinctrl-2 = <0x7c>;
resets = <0x46 0x42>;
reset-names = "tsadc-apb";
rockchip,grf = <0x13>;
rockchip,hw-tshut-temp = <0x186a0>;
#thermal-sensor-cells = <0x1>;
status = "okay";
rockchip,hw-tshut-mode = <0x0>;
rockchip,hw-tshut-polarity = <0x0>;
phandle = <0x30>;
};
--
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/20191201/940208df/attachment.sig>
More information about the freebsd-arm
mailing list