> Date: Fri, 18 May 2018 22:21:06 -0700
> From: Mike Larkin <[email protected]>
>
> > @@ -2564,6 +2564,14 @@ aml_rwgsb(struct aml_value *conn, int bp
> > cmdlen = 1;
> > buflen = 2;
> > break;
> > + case 0x0b: /* AttribBytes */
> > + cmdlen = 1;
> > + buflen = alen;
> > + break;
> > + case 0x0e: /* AttribRawBytes */
> > + cmdlen = 1;
> > + cmdlen = alen;
>
> The previous two lines don't look right...
Good catch. Here is a new diff with that fixed.
ok?
Index: dev/acpi/dsdt.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/dsdt.c,v
retrieving revision 1.239
diff -u -p -r1.239 dsdt.c
--- dev/acpi/dsdt.c 17 May 2018 20:46:45 -0000 1.239
+++ dev/acpi/dsdt.c 19 May 2018 07:24:32 -0000
@@ -2293,7 +2293,7 @@ aml_register_regionspace(struct aml_node
void aml_rwgen(struct aml_value *, int, int, struct aml_value *, int, int);
void aml_rwgpio(struct aml_value *, int, int, struct aml_value *, int, int);
-void aml_rwgsb(struct aml_value *, int, int, struct aml_value *, int, int);
+void aml_rwgsb(struct aml_value *, int, int, int, struct aml_value *, int,
int);
void aml_rwindexfield(struct aml_value *, struct aml_value *val, int);
void aml_rwfield(struct aml_value *, int, int, struct aml_value *, int);
@@ -2520,8 +2520,8 @@ aml_rwgpio(struct aml_value *conn, int b
#ifndef SMALL_KERNEL
void
-aml_rwgsb(struct aml_value *conn, int bpos, int blen, struct aml_value *val,
- int mode, int flag)
+aml_rwgsb(struct aml_value *conn, int alen, int bpos, int blen,
+ struct aml_value *val, int mode, int flag)
{
union acpi_resource *crs = (union acpi_resource *)conn->v_buffer;
struct aml_node *node;
@@ -2566,6 +2566,14 @@ aml_rwgsb(struct aml_value *conn, int bp
cmdlen = 1;
buflen = 2;
break;
+ case 0x0b: /* AttribBytes */
+ cmdlen = 1;
+ buflen = alen;
+ break;
+ case 0x0e: /* AttribRawBytes */
+ cmdlen = 0;
+ buflen = alen;
+ break;
default:
aml_die("unsupported access type 0x%x", flag);
break;
@@ -2714,7 +2722,8 @@ aml_rwfield(struct aml_value *fld, int b
break;
#ifndef SMALL_KERNEL
case ACPI_OPREG_GSB:
- aml_rwgsb(ref2, fld->v_field.bitpos + bpos, blen,
+ aml_rwgsb(ref2, fld->v_field.ref3,
+ fld->v_field.bitpos + bpos, blen,
val, mode, fld->v_field.flags);
break;
#endif
@@ -2801,17 +2810,17 @@ aml_parsefieldlist(struct aml_scope *msc
bpos = 0;
while (mscope->pos < mscope->end) {
switch (*mscope->pos) {
- case 0x00: /* reserved, length */
+ case 0x00: /* ReservedField */
mscope->pos++;
blen = aml_parselength(mscope);
break;
- case 0x01: /* attrib */
+ case 0x01: /* AccessField */
mscope->pos++;
blen = 0;
flags = aml_get8(mscope->pos++);
flags |= aml_get8(mscope->pos++) << 8;
break;
- case 0x02: /* connection */
+ case 0x02: /* ConnectionField */
mscope->pos++;
blen = 0;
conn = aml_parse(mscope, 'o', "Connection");
@@ -2819,7 +2828,14 @@ aml_parsefieldlist(struct aml_scope *msc
aml_die("Could not parse connection");
conn->node = mscope->node;
break;
- default: /* 4-byte name, length */
+ case 0x03: /* ExtendedAccessField */
+ mscope->pos++;
+ blen = 0;
+ flags = aml_get8(mscope->pos++);
+ flags |= aml_get8(mscope->pos++) << 8;
+ indexval = aml_get8(mscope->pos++);
+ break;
+ default: /* NamedField */
mscope->pos = aml_parsename(mscope->node, mscope->pos,
&rv, 1);
blen = aml_parselength(mscope);