35 if (ver >= 0x30 && hdr >= 0x0c)
36 return nv_ro16(bios, dcb + 0x0a);
37 if (ver >= 0x22 && nv_ro08(bios, dcb - 1) >= 0x13)
38 return nv_ro16(bios, dcb - 0x0f);
48 *ver = nv_ro08(bios, gpio);
49 if (*ver < 0x30 && ent < nv_ro08(bios, gpio + 2))
50 return gpio + 3 + (ent * nv_ro08(bios, gpio + 1));
51 else if (ent < nv_ro08(bios, gpio + 2))
52 return gpio + nv_ro08(bios, gpio + 1) +
53 (ent * nv_ro08(bios, gpio + 3));
68 u16 data = nv_ro16(bios, entry);
70 .
line = (data & 0x001f) >> 0,
71 .func = (data & 0x07e0) >> 5,
72 .log[0] = (data & 0x1800) >> 11,
73 .
log[1] = (data & 0x6000) >> 13,
74 .param = !!(data & 0x8000),
78 u32 data = nv_ro32(bios, entry);
80 .
line = (data & 0x0000001f) >> 0,
81 .func = (data & 0x0000ff00) >> 8,
82 .log[0] = (data & 0x18000000) >> 27,
83 .
log[1] = (data & 0x60000000) >> 29,
84 .param = !!(data & 0x80000000),
87 u32 data = nv_ro32(bios, entry + 0);
88 u8 data1 = nv_ro32(bios, entry + 4);
90 .
line = (data & 0x0000003f) >> 0,
91 .func = (data & 0x0000ff00) >> 8,
92 .log[0] = (data1 & 0x30) >> 4,
93 .
log[1] = (data1 & 0xc0) >> 6,
94 .param = !!(data & 0x80000000),
98 if ((line == 0xff || line == gpio->
line) &&
99 (func == 0xff || func == gpio->
func))
104 if ((entry =
dcb_table(bios, &ver, &hdr, &cnt, &len)) && ver >= 0x22) {
106 u8 conf = nv_ro08(bios, entry - 5);
107 u8 addr = nv_ro08(bios, entry - 4);
112 .log[0] = !!(conf & 0x02),
113 .
log[1] = !(conf & 0x02),