Download raw body.
qcgpio(4) X1E support based on ACPI tables
On Sun, Dec 22, 2024 at 06:21:45PM +0100, Mark Kettenis wrote: > > Date: Sun, 22 Dec 2024 10:51:35 +0100 > > From: Marcus Glocker <marcus@nazgul.ch> > > > > patrick@ found a NetBSD commit which figured out how to map the GPIO > > pins based on the ACPI tables for X1E devices: > > > > https://github.com/NetBSD/src/commit/575554bd388d93cfff9174abadf2aab93fbfdf8e > > > > Currently we're only using hard coded mapping in qcgpio(4), which > > might not do the correct mapping, or miss some mappings. > > > > Following a diff which tries to adapt the NetBSD implementation in > > qcpgio(4) for X1E devices. > > > > Before I throw this diff in my attic, maybe some X1E users want to > > regression test it, or see if it even fixes some GPIO mappings. > > > > On my Samsung Galaxy Book4 Edge it causes no regression (keyboard and > > touch-pad still work). Unfortunately the touch-screen still doesn't > > work. I guess there is another issue with that. > > I think this is useful to have. Tested this on my x13s (no change) > and my vivobook (no change apart from debug output). > > ok kettenis@ My Lenogo Yoga 7x also seems nice. Cool stuff! --- x1.dmesg Sun Dec 22 21:39:42 2024 +++ x1q.dmesg Sun Dec 22 21:39:10 2024 @@ -1,7 +1,7 @@ -OpenBSD 7.6-current (GENERIC.MP) #266: Fri Dec 20 22:58:05 MST 2024 - deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP +OpenBSD 7.6-current (GENERIC.MP) #34: Sun Dec 22 21:27:00 CET 2024 + patrick@yoga.fritz.box:/usr/src/sys/arch/arm64/compile/GENERIC.MP real mem = 33589039104 (32033MB) -avail mem = 32415064064 (30913MB) +avail mem = 32415055872 (30913MB) random: good seed from bootblocks mainbus0 at root: ACPI psci0 at mainbus0: PSCI 1.1, SMCCC 1.3, SYSTEM_SUSPEND @@ -69,7 +69,135 @@ acpimcfg0: addr 0x74000000, bus 0-1 "QCOM06C2" at acpi0 not configured "QCOM0C17" at acpi0 not configured -qcgpio0 at acpi0 GIO0 addr 0xf100000/0xf00000 irq 240 +qcgpio0 at acpi0 GIO0 addr 0xf100000/0xf00000 +qcgpio_acpi_attach: npdcmap=16 +qcgpio_get_irqs: irq index 0: irq 240 +qcgpio_get_irqs: irq index 1: irq 240 +qcgpio_get_irqs: irq index 2: irq 240 +qcgpio_get_irqs: irq index 3: irq 240 +qcgpio_get_irqs: irq index 4: irq 598 +qcgpio_get_irqs: irq index 5: irq 760 +qcgpio_get_irqs: irq index 6: irq 595 +qcgpio_get_irqs: irq index 7: irq 659 +qcgpio_get_irqs: irq index 8: irq 602 +qcgpio_get_irqs: irq index 9: irq 604 +qcgpio_get_irqs: irq index 10: irq 645 +qcgpio_get_irqs: irq index 11: irq 642 +qcgpio_get_irqs: irq index 12: irq 649 +qcgpio_get_irqs: irq index 13: irq 756 +qcgpio_get_irqs: irq index 14: irq 594 +qcgpio_get_irqs: irq index 15: irq 578 +qcgpio_fill_pdcmap: pdc index 0: probing irq 655, pin 38 +qcgpio_fill_pdcmap: pdc index 1: probing irq 654, pin 166 +qcgpio_fill_pdcmap: pdc index 2: probing irq 653, pin 221 +qcgpio_fill_pdcmap: pdc index 3: probing irq 652, pin 220 +qcgpio_fill_pdcmap: pdc index 4: probing irq 651, pin 217 +qcgpio_fill_pdcmap: pdc index 5: probing irq 650, pin 196 +qcgpio_fill_pdcmap: pdc index 6: probing irq 649, pin 157 +qcgpio_fill_pdcmap: pdc index 7: probing irq 648, pin 65 +qcgpio_fill_pdcmap: pdc index 8: probing irq 647, pin 156 +qcgpio_fill_pdcmap: pdc index 9: probing irq 646, pin 153 +qcgpio_fill_pdcmap: pdc index 10: probing irq 645, pin 151 +qcgpio_fill_pdcmap: pdc index 11: probing irq 644, pin 150 +qcgpio_fill_pdcmap: pdc index 12: probing irq 643, pin 181 +qcgpio_fill_pdcmap: pdc index 13: probing irq 642, pin 154 +qcgpio_fill_pdcmap: pdc index 14: probing irq 641, pin 172 +qcgpio_fill_pdcmap: pdc index 15: probing irq 605, pin 163 +qcgpio_fill_pdcmap: pdc index 16: probing irq 604, pin 148 +qcgpio_fill_pdcmap: pdc index 17: probing irq 603, pin 147 +qcgpio_fill_pdcmap: pdc index 18: probing irq 602, pin 145 +qcgpio_fill_pdcmap: pdc index 19: probing irq 601, pin 144 +qcgpio_fill_pdcmap: pdc index 20: probing irq 600, pin 141 +qcgpio_fill_pdcmap: pdc index 21: probing irq 599, pin 30 +qcgpio_fill_pdcmap: pdc index 22: probing irq 598, pin 71 +qcgpio_fill_pdcmap: pdc index 23: probing irq 597, pin 64 +qcgpio_fill_pdcmap: pdc index 24: probing irq 596, pin 53 +qcgpio_fill_pdcmap: pdc index 25: probing irq 595, pin 67 +qcgpio_fill_pdcmap: pdc index 26: probing irq 594, pin 59 +qcgpio_fill_pdcmap: pdc index 27: probing irq 593, pin 13 +qcgpio_fill_pdcmap: pdc index 28: probing irq 592, pin 11 +qcgpio_fill_pdcmap: pdc index 29: probing irq 591, pin 113 +qcgpio_fill_pdcmap: pdc index 30: probing irq 590, pin 134 +qcgpio_fill_pdcmap: pdc index 31: probing irq 589, pin 131 +qcgpio_fill_pdcmap: pdc index 32: probing irq 588, pin 55 +qcgpio_fill_pdcmap: pdc index 33: probing irq 587, pin 39 +qcgpio_fill_pdcmap: pdc index 34: probing irq 586, pin 51 +qcgpio_fill_pdcmap: pdc index 35: probing irq 585, pin 29 +qcgpio_fill_pdcmap: pdc index 36: probing irq 584, pin 28 +qcgpio_fill_pdcmap: pdc index 37: probing irq 583, pin 129 +qcgpio_fill_pdcmap: pdc index 38: probing irq 582, pin 125 +qcgpio_fill_pdcmap: pdc index 39: probing irq 581, pin 123 +qcgpio_fill_pdcmap: pdc index 40: probing irq 580, pin 121 +qcgpio_fill_pdcmap: pdc index 41: probing irq 579, pin 0 +qcgpio_fill_pdcmap: pdc index 42: probing irq 578, pin 3 +qcgpio_fill_pdcmap: pdc index 43: probing irq 577, pin 2 +qcgpio_fill_pdcmap: pdc index 44: probing irq 576, pin 19 +qcgpio_fill_pdcmap: pdc index 45: probing irq 575, pin 15 +qcgpio_fill_pdcmap: pdc index 46: probing irq 574, pin 7 +qcgpio_fill_pdcmap: pdc index 47: probing irq 850, pin 32 +qcgpio_fill_pdcmap: pdc index 48: probing irq 849, pin 27 +qcgpio_fill_pdcmap: pdc index 49: probing irq 848, pin 23 +qcgpio_fill_pdcmap: pdc index 50: probing irq 760, pin 66 +qcgpio_fill_pdcmap: pdc index 51: probing irq 759, pin 95 +qcgpio_fill_pdcmap: pdc index 52: probing irq 758, pin 94 +qcgpio_fill_pdcmap: pdc index 53: probing irq 757, pin 93 +qcgpio_fill_pdcmap: pdc index 54: probing irq 756, pin 92 +qcgpio_fill_pdcmap: pdc index 55: probing irq 755, pin 84 +qcgpio_fill_pdcmap: pdc index 56: probing irq 754, pin 230 +qcgpio_fill_pdcmap: pdc index 57: probing irq 753, pin 228 +qcgpio_fill_pdcmap: pdc index 58: probing irq 752, pin 208 +qcgpio_fill_pdcmap: pdc index 59: probing irq 751, pin 203 +qcgpio_fill_pdcmap: pdc index 60: probing irq 750, pin 225 +qcgpio_fill_pdcmap: pdc index 61: probing irq 749, pin 224 +qcgpio_fill_pdcmap: pdc index 62: probing irq 672, pin 34 +qcgpio_fill_pdcmap: pdc index 63: probing irq 671, pin 26 +qcgpio_fill_pdcmap: pdc index 64: probing irq 670, pin 81 +qcgpio_fill_pdcmap: pdc index 65: probing irq 668, pin 24 +qcgpio_fill_pdcmap: pdc index 66: probing irq 667, pin 80 +qcgpio_fill_pdcmap: pdc index 67: probing irq 666, pin 222 +qcgpio_fill_pdcmap: pdc index 68: probing irq 665, pin 6 +qcgpio_fill_pdcmap: pdc index 69: probing irq 664, pin 18 +qcgpio_fill_pdcmap: pdc index 70: probing irq 663, pin 214 +qcgpio_fill_pdcmap: pdc index 71: probing irq 662, pin 212 +qcgpio_fill_pdcmap: pdc index 72: probing irq 661, pin 219 +qcgpio_fill_pdcmap: pdc index 73: probing irq 660, pin 215 +qcgpio_fill_pdcmap: pdc index 74: probing irq 659, pin 193 +qcgpio_fill_pdcmap: pdc index 75: probing irq 658, pin 184 +qcgpio_fill_pdcmap: pdc index 76: probing irq 657, pin 33 +qcgpio_fill_pdcmap: pdc index 77: probing irq 656, pin 175 +qcgpio_fill_pdcmap: pdc index 78: probing irq 862, pin 91 +qcgpio_fill_pdcmap: pdc index 79: probing irq 861, pin 87 +qcgpio_fill_pdcmap: pdc index 80: probing irq 860, pin 85 +qcgpio_fill_pdcmap: pdc index 81: probing irq 859, pin 83 +qcgpio_fill_pdcmap: pdc index 82: probing irq 858, pin 79 +qcgpio_fill_pdcmap: pdc index 83: probing irq 857, pin 75 +qcgpio_fill_pdcmap: pdc index 84: probing irq 856, pin 68 +qcgpio_fill_pdcmap: pdc index 85: probing irq 855, pin 213 +qcgpio_fill_pdcmap: pdc index 86: probing irq 854, pin 47 +qcgpio_fill_pdcmap: pdc index 87: probing irq 853, pin 43 +qcgpio_fill_pdcmap: pdc index 88: probing irq 852, pin 36 +qcgpio_fill_pdcmap: pdc index 89: probing irq 851, pin 35 +qcgpio_fill_pdcmap: pdc index 90: probing irq 867, pin 232 +qcgpio_fill_pdcmap: pdc index 91: probing irq 864, pin 31 +qcgpio_fill_pdcmap: pdc index 92: probing irq 863, pin 21 +qcgpio_fill_pdcmap: irq index 0: irq=240, pin=-1 +qcgpio_fill_pdcmap: irq index 1: irq=240, pin=-1 +qcgpio_fill_pdcmap: irq index 2: irq=240, pin=-1 +qcgpio_fill_pdcmap: irq index 3: irq=240, pin=-1 +qcgpio_fill_pdcmap: irq index 4: irq=598, pin=71 +qcgpio_fill_pdcmap: irq index 5: irq=760, pin=66 +qcgpio_fill_pdcmap: irq index 6: irq=595, pin=67 +qcgpio_fill_pdcmap: irq index 7: irq=659, pin=193 +qcgpio_fill_pdcmap: irq index 8: irq=602, pin=145 +qcgpio_fill_pdcmap: irq index 9: irq=604, pin=148 +qcgpio_fill_pdcmap: irq index 10: irq=645, pin=151 +qcgpio_fill_pdcmap: irq index 11: irq=642, pin=154 +qcgpio_fill_pdcmap: irq index 12: irq=649, pin=157 +qcgpio_fill_pdcmap: irq index 13: irq=756, pin=92 +qcgpio_fill_pdcmap: irq index 14: irq=594, pin=59 +qcgpio_fill_pdcmap: irq index 15: irq=578, pin=3 +qcgpio_acpi_attach: npins=238 + irq 240 "QCOM0C0B" at acpi0 not configured "QCOM0C2B" at acpi0 not configured "QCOM0427" at acpi0 not configured
qcgpio(4) X1E support based on ACPI tables