Index | Thread | Search

From:
Patrick Wildt <patrick@blueri.se>
Subject:
Re: qcgpio(4) X1E support based on ACPI tables
To:
Marcus Glocker <marcus@nazgul.ch>
Cc:
Mark Kettenis <mark.kettenis@xs4all.nl>, tech@openbsd.org
Date:
Sun, 22 Dec 2024 21:48:02 +0100

Download raw body.

Thread
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