Page MenuHomeFreeBSD

D54771.diff
No OneTemporary

D54771.diff

diff --git a/sys/powerpc/powermac/pmu.c b/sys/powerpc/powermac/pmu.c
--- a/sys/powerpc/powermac/pmu.c
+++ b/sys/powerpc/powermac/pmu.c
@@ -276,7 +276,7 @@
{
const char *type = ofw_bus_get_type(dev);
- if (strcmp(type, "extint-gpio1") != 0)
+ if (type == NULL || strcmp(type, "extint-gpio1") != 0)
return (ENXIO);
device_set_desc(dev, "Apple PMU99 External Interrupt");
@@ -288,7 +288,7 @@
{
const char *type = ofw_bus_get_type(dev);
- if (strcmp(type, "via-pmu") != 0)
+ if (type == NULL || strcmp(type, "via-pmu") != 0)
return (ENXIO);
device_set_desc(dev, "Apple PMU99 Controller");
@@ -599,6 +599,7 @@
struct pmu_softc *sc = cookie;
int i, rcv_len = -1;
uint8_t out_len, intreg;
+ uint8_t dummy;
intreg = pmu_read_reg(sc, vIER);
intreg &= 0x10;
@@ -626,16 +627,20 @@
/* read command */
if (rcv_len == 1) {
- pmu_read_byte(sc, out_msg);
+ pmu_read_byte(sc, &dummy);
+ if (rlen > 0)
+ out_msg[0] = dummy;
goto done;
- } else
+ } else if (rlen > 0) {
out_msg[0] = cmd;
+ }
if (rcv_len < 0) {
pmu_read_byte(sc, &out_len);
rcv_len = out_len + 1;
}
- for (i = 1; i < min(rcv_len, rlen); i++)
+ for (i = 1; i < min(rcv_len, rlen); i++) {
pmu_read_byte(sc, &out_msg[i]);
+ }
done:
pmu_write_reg(sc, vIER, (intreg == 0) ? 0 : 0x90);

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 14, 8:52 PM (10 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27757363
Default Alt Text
D54771.diff (1 KB)

Event Timeline