47 lines
1.2 KiB
Markdown
47 lines
1.2 KiB
Markdown
On the MacBook Pro, the keyboard backlight shows up in the ADT as:
|
|
|
|
```
|
|
fpwm {
|
|
[...]
|
|
AAPL.phandle = 59
|
|
clock-gates = 37
|
|
device_type = fpwm
|
|
reg = [889470976, 16384]
|
|
|
|
kbd-backlight {
|
|
[...]
|
|
}
|
|
}
|
|
```
|
|
|
|
That suggests that there's a PWM at 0x235044000, enabled by the clock gate at 0x23b7001e0, which controls the keyboard backlight. That does appear to be the case :-)
|
|
|
|
Registers, as far as I've figured them out:
|
|
|
|
```
|
|
+0x00: write 0x4239 to enable or after counter values changed
|
|
+0x04: unknown, no effect
|
|
+0x08: status bits: bit 0x01 is set when the light comes on, 0x02 is set when the light comes off. Write-to-clear.
|
|
+0x0c: unknown, no effect
|
|
+0x18: off period, in 24 MHz ticks
|
|
+0x1c: on period, in 24 MHz ticks
|
|
```
|
|
|
|
So a complete m1n1 sequence to make the keyboard backlight flash in an annoying and possibly seizure-inducing way is:
|
|
|
|
```
|
|
>>> write32(0x23b7001e0, 0xf)
|
|
>>> write32(0x23504401c, 1200000)
|
|
>>> write32(0x235044018, 1200000)
|
|
>>> write32(0x235044000, 0x4239)
|
|
```
|
|
|
|
changing the frequency while keeping a 50% duty cycle:
|
|
|
|
```
|
|
>>> write32(0x235044018, 4000)
|
|
>>> write32(0x23504401c, 4000)
|
|
>>> write32(0x235044000, 0x4239)
|
|
```
|
|
|
|
PR at https://github.com/AsahiLinux/linux/pull/5 |