> 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);

Reply via email to