Ticket #2295 (new defect)
cpufreq: serial ports fail after suspend/resume: rxerr: port=1 ch=0x24, rxs=0x00000001
| Reported by: | lindi | Owned by: | openmoko-kernel |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | kernel | Version: | unspecified |
| Severity: | normal | Keywords: | kernel cpufreq serial gps |
| Cc: | Blocked By: | ||
| Blocking: | Estimated Completion (week): | ||
| HasPatchForReview: | no | PatchReviewResult: | |
| Reproducible: | always |
Description
Steps to reproduce:
1) boot andy-tracking 5a6ed99264c704e5 with Rask's cpufreq patches (http://iki.fi/lindi/openmoko/consumption/cpufreq-*.patch)
2) sudo sh -c "echo 1 > /sys/class/i2c-adapter/i2c-0/0-0073/pcf50633-regltr.7/neo1973-pm-gps.0/power_on"
3) gpsd -F gpsd.sock -N -n -D 1 /dev/ttySAC1
4) ctrl-c
5) sudo sh -c "echo 0 > /sys/class/i2c-adapter/i2c-0/0-0073/pcf50633-regltr.7/neo1973-pm-gps.0/power_on"
6) sudo sh -c "echo mem > /sys/power/state"
7) wake the phone by pressing power button
8) sudo sh -c "echo 1 > /sys/class/i2c-adapter/i2c-0/0-0073/pcf50633-regltr.7/neo1973-pm-gps.0/power_on"
9) gpsd -F gpsd.sock -N -n -D 1 /dev/ttySAC1
Expected results:
3 & 9) gpsd reads gps data over serial port correctly.
Actual results:
3) gpsd reads gps data over serial port correctly:
gpsd: garmin_gps Linux USB module not active.
gpsd: => Probing device subtype 0
gpsd: Satellite data no good (1 of 1).
gpsd: => Probing device subtype 1
gpsd: => Probing device subtype 2
gpsd: => Probing device subtype 3
gpsd: unknown sentence: "$GPTXT,01,01,01,PGRM inv format*34\x0d\x0a"
gpsd: => Probing device subtype 4
gpsd: unknown sentence: "$GPTXT,01,01,01,PSRF inv format*2B\x0d\x0a"
gpsd: => Probing device subtype 5
gpsd: unknown sentence: "$GPTXT,01,01,01,PFEC inv format*2C\x0d\x0a"
gpsd: => Probing device subtype 6
gpsd: unknown sentence: "$GPTXT,01,01,01,PFST inv format*2D\x0d\x0a"
gpsd: => Probing device subtype 7
gpsd: unknown sentence: "$GPTXT,01,01,01,PFEC inv format*2C\x0d\x0a"
gpsd: => Probing device subtype 8
gpsd: unknown sentence: "$GPTXT,01,01,01,PASH inv format*36\x0d\x0a"
gpsd: unknown sentence: "$GPTXT,01,01,01,PMTK inv format*3E\x0d\x0a"
gpsd: Satellite data no good (1 of 1).
gpsd: Satellite data no good (1 of 1).
gpsd: Satellite data no good (1 of 1).
gpsd: Satellite data no good (1 of 1).
...
9) gpsd prints only
gpsd: garmin_gps Linux USB module not active.
and kernel floods the logs with
[21474717.745000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474717.745000] rxerr: port=1 ch=0x62, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x69, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x81, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x67, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x2d, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x4e, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0xa8, rxs=0x00000004 [21474717.755000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xba, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x26, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0xaa, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x12, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x2e, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x7b, rxs=0x00000004 [21474717.760000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474718.270000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.270000] rxerr: port=1 ch=0x62, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x69, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x81, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x66, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x2d, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x4b, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474718.285000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x52, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xba, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x22, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0xaa, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x12, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x2f, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x88, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x7a, rxs=0x00000004 [21474718.290000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474718.800000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.800000] rxerr: port=1 ch=0x63, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x69, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x81, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x66, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x2d, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x88, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x09, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x4e, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474718.815000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x6e, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xb0, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xbb, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x26, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0xaa, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x12, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x2f, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x7a, rxs=0x00000004 [21474718.820000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474719.335000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.335000] rxerr: port=1 ch=0x63, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x69, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x81, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x66, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x2d, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x09, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x4e, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474719.345000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xa9, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xb0, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xbb, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x26, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0xaa, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x12, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x2f, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x7a, rxs=0x00000004 [21474719.350000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474719.855000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.855000] rxerr: port=1 ch=0x62, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x68, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x81, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x63, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x2d, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x4e, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0xb8, rxs=0x00000004 [21474719.870000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x56, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x6a, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xa8, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xb1, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xba, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x26, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0xaa, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x13, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x2a, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x89, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x08, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x23, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x7a, rxs=0x00000004 [21474719.875000] rxerr: port=1 ch=0x06, rxs=0x00000004 [21474720.390000] rxerr: port=1 ch=0xea, rxs=0x00000004 [21474720.390000] rxerr: port=1 ch=0x63, rxs=0x00000004 [21474720.405000] rxerr: port=1 ch=0x69, rxs=0x00000004 [21474720.405000] rxerr: port=1 ch=0x81, rxs=0x00000004
More info:
1) Note that I have not yet written anything to /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor here. I only applied the patches.
2) the data in the error messages
$ dmesg|grep rxerr|cut -d' ' -f4|cut -d'x' -f2|cut -d',' -f1|while read f; do echo -en "\\x$f"; done|hd
00000000 ea 62 69 81 ea 67 2d 89 08 23 4e 06 ea 56 6a a8 |êbi.êg-..#N.êVj¨|
00000010 b1 ea 56 6a a9 b1 ba ea 26 aa 12 2e 89 08 23 7b |±êVj©±ºê&ª....#{|
00000020 06 ea 62 69 81 ea 66 2d 89 08 23 4b 06 ea 56 6a |.êbi.êf-..#K.êVj|
00000030 a9 b1 ea 52 6a a9 b1 ba ea 22 aa 12 2f 88 08 23 |©±êRj©±ºê"ª./..#|
00000040 7a 06 ea 63 69 81 ea 66 2d 88 09 23 4e 06 ea 56 |z.êci.êf-..#N.êV|
00000050 6a a9 b1 ea 56 6e a9 b0 bb ea 26 aa 12 2f 89 08 |j©±êVn©°»ê&ª./..|
00000060 23 7a 06 ea 63 69 81 ea 66 2d 89 09 23 4e 06 ea |#z.êci.êf-..#N.ê|
00000070 56 6a a9 b1 ea 56 6a a9 b0 bb ea 26 aa 12 2f 89 |Vj©±êVj©°»ê&ª./.|
00000080 08 23 7a 06 ea 62 68 81 ea 63 2d 89 08 23 4e 06 |.#z.êbh.êc-..#N.|
00000090 ea 56 6a b8 b1 ea 56 6a a8 b1 ba ea 26 aa 13 2a |êVj¸±êVj¨±ºê&ª.*|
000000a0 89 08 23 7a 06 ea 63 69 81 ea 66 2d 89 08 23 4e |..#z.êci.êf-..#N|
000000b0 06 ea 56 6a a9 b1 ea 56 6a a9 b0 bb ea 26 aa 12 |.êVj©±êVj©°»ê&ª.|
000000c0 2f 89 08 23 7a 06 ea 63 69 81 ea 66 2d 89 08 23 |/..#z.êci.êf-..#|
000000d0 4e 06 ea 56 6a a9 b1 ea 56 6a a9 b0 bb ea 26 aa |N.êVj©±êVj©°»ê&ª|
000000e0 12 2f 89 08 23 7a 06 ea 62 69 81 ea 63 2d 89 08 |./..#z.êbi.êc-..|
000000f0 23 4e 06 ea 56 6a a8 b1 ea 56 6a a8 b1 ba ea 26 |#N.êVj¨±êVj¨±ºê&|
00000100 aa 12 2e 89 08 23 7b 06 ea 62 69 81 ea 66 2d 89 |ª....#{.êbi.êf-.|
00000110 08 23 4b 06 ea 56 6a a9 b1 ea 52 6a a9 b1 ba ea |.#K.êVj©±êRj©±ºê|
00000120 22 aa 12 2f 88 09 23 7a 06 ea 62 69 81 ea 67 2d |"ª./..#z.êbi.êg-|
00000130 89 09 23 4e 06 ea 56 6a a8 b4 ea 56 6a a9 b1 ba |..#N.êVj¨´êVj©±º|
00000140 ea 26 aa 12 2e 89 08 23 7b 06 ea 62 69 81 ea 66 |ê&ª....#{.êbi.êf|
00000150 2d 8c 09 23 4e 06 ea 56 6a a9 b0 ea 56 6a a9 b1 |-..#N.êVj©°êVj©±|
00000160 ba ea 26 aa 12 2f 89 08 23 7b 02 |ºê&ª./..#{.|
does not seem to look normal gps communication
write(6, "$PASHQ,RID*28\r\n"..., 15) = 15 write(6, "\x02\x99\x66\x1c\x08\x00\x04\x02\x00\x00\x12\x03"..., 12) = 12 write(6, "\x02\x99\x66\x20\x0e\x00\x00\x01\xae\x02\x00\x00\x71\x00\x00\x00\xf2\x03"..., 18) = 18 write(6, "\x02\x99\x66\x20\x0e\x00\x00\x01\x86\x02\x0a\x00\x71\x00\x00\x00\xd0\x03"..., 18) = 18 write(6, "\x01\x3f\xc0\x08\x55\x47\x50\x53\x2d\x30\x30\x30\x04\x03"..., 14) = 14 write(6, "\x01\x2d\xd2\x00\x00\x01"..., 6) = 6 read(6, "$GPRMC,,V,,,,,,,"..., 1033) = 16 read(6, ",,,N*53\r"..., 1017) = 8 read(6, "\n$GPVTG,,,,,,,,,"..., 1009) = 16 write(6, "$PGRMCE*0E\r\n"..., 12) = 12 read(6, "N*30\r\n$GPGGA,,,,,,0,00,99.99,,,,,,*48\r\n$"..., 1018) = 40 write(6, "$PSRF100,0,9600,8,1,0*0C\r\n"..., 26) = 26 read(6, "GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30\r\n$GPGSV,1,1,00*79\r\n$GPGLL,,,,"..., 999) = 72 write(6, "$PFEC,GPint*58\r\n"..., 16) = 16 read(6, ",,V,N*64\r\n$GPZDA,,,,,00,00*48\r\n$GPTXT,01,01,01,P"..., 960) = 48 write(6, "\x10\x02\x12\x8e\x7f\x01\x01\x00\x01\x01\x01\x00\x01\x00\x00\x00\x00\x00\x00\x13\x10\x03"..., 22) = 22 read(6, "GRM inv format*34\r\n$GPTXT,01,01,01,PSRF inv format*2B\r\n$GPTXT,01,01,01,"..., 957) = 71 write(6, "$PFST*11\r\n"..., 10) = 10 read(6, "PFEC inv format*2C\r\n"..., 904) = 20 write(6, "$PFEC,GPsrq*5B\r\n"..., 16) = 16 read(6, "$GPTXT,01,01,01,PFST inv format*"..., 904) = 32 write(6, "$PASHQ,RID*28\r\n"..., 15) = 15 read(6, "2D\r\n"..., 893) = 4 write(6, "\xb5\x62\x0a\x04\x00\x00\x0e"..., 7) = 7 read(6, "$GPTXT,01,01,01,PFEC inv format*2C\r\n$GPTXT,01,01"..., 925) = 48 write(6, "$PMTK605*31\r\n"..., 13) = 13 read(6, ",01,PASH inv format*36\r\n$GPTXT,01,01,01,"..., 913) = 40 read(6, "PMTK inv format*3E\r\n"..., 909) = 20 read(6, "$GPRMC,,"..., 925) = 8 read(6, "V,,,,,,,,,,N*53\r\n$GPVTG,,,,,,,,,N*30\r\n$G"..., 953) = 40 read(6, "PGGA,,,,,,0,00,99.99,,,,,,*48\r\n$"..., 949) = 32 read(6, "GPGSA,A,1,,,,,,,,,,,,,99"..., 953) = 24 read(6, ".99,99.99,99.99*30\r\n$GPG"..., 954) = 24 read(6, "SV,1,1,00*79\r\n$GPGLL,,,,"..., 951) = 24 read(6, ",,V,N*64\r\n$GPZDA,,,,,00,"..., 960) = 24 read(6, "00*48\r\n"..., 981) = 7 read(6, "$GPRMC,,"..., 992) = 8 read(6, "V,,,,,,,,,,N*53\r\n$GPVTG,"..., 1004) = 24 read(6, ",,,,,,,,N*30\r\n$G"..., 1001) = 16 read(6, "PGGA,,,,,,0,00,99.99,,,,"..., 1010) = 24 read(6, ",,*48\r\n$GPGSA,A,1,,,,,,,"..., 1007) = 24 read(6, ",,,,,,99.99,99.99,99.99*"..., 1016) = 24 read(6, "30\r\n$GPG"..., 992) = 8
at all.
Attachments
Change History
comment:1 Changed 4 years ago by lindi
Here's what the kernel prints on bootup:
NET: Registered protocol family 1 regulator: Unable to get requested regulator: vddarm cpufreq: Failed to obtain VDDARM: -19 cpufreq: Only frequency scaling available conservative governor failed, too long transition latency of HW, fallback to performance governor cpufreq: Registering driver returned 0. gta02-pm-wlan gta02-pm-wlan.0: starting s3c24xx_pwm s3c24xx_pwm.0: s3c24xx_pwm is registered NetWinder Floating Point Emulator V0.97 (double precision)
comment:2 Changed 4 years ago by budfive
I did some sleuthing by peeking into /dev/mem. Here's the analysis:
Before and after the suspend, all of the UART registers seem to be set
identically. This indicates that the UART module itself is likely not the
culprit. The other likely caus is the baud clock. It is likely running at
the wrong speed, causing the UART to read garbage and to report reception
errors. Further, since cpufreq is involved, it makes this possibility all
the more likely.
Looking at the clock registers, there are 2 discrepancies:
| Address | Meaning | Value before suspend | Value after suspend | |------------+---------+----------------------+---------------------| | 0x4C000004 | MPLLCON | 0x0002a010 | 0x0008e071 | | 0x4C000014 | CLKDIVN | 0x00000005 | 0x00000007 |
This means that the MPLL configuration and the HCLK divider were changed.
The UART clock sources are configured with the UCONx register at 0x50000004
for UART0. The value of these registers was always 0x000003C5, indicating a
PCLK source for the baud. PCLK is configured by the CLKDIVN register, and in
our case is set to run at HCLK/2. So our modified HCLK affected our PCLK,
which made the baud clock in our UART run at the wrong speed. This is the
cause of the bug.
The changed MPLL configuration probably isn't good either, but it's not
causing this particular breakage at least.

kernel configuration to reproduce the problem, notably DEFAULT_GOV_CONSERVATIVE=y