aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2020-03-03 09:01:15 +0100
committerLubomir Rintel <lkundrak@v3.sk>2021-01-10 02:10:56 +0100
commite23736fc29c692e6faa070e489bd5d21208e477d (patch)
treeacfd0fde8ca5859a16f5973a50d565933b4c8c79
parente89e49d84e45d5b94aca9487d8373e1ae03cc938 (diff)
downloadopenfirmware-e23736fc29c692e6faa070e489bd5d21208e477d.tar.gz
dev: add driver for KB3930 Embedded Controller on Dell Ariel
This is an ENE Embedded Controller with the Dell Ariel firmware. It seems to be able to control LEDs and USB port power.
-rw-r--r--dev/kb3930.fth118
1 files changed, 118 insertions, 0 deletions
diff --git a/dev/kb3930.fth b/dev/kb3930.fth
new file mode 100644
index 00000000..b839ea7d
--- /dev/null
+++ b/dev/kb3930.fth
@@ -0,0 +1,118 @@
+purpose: ENE KB3930 Embedded Controller Driver
+\ See license at end of file
+
+" embedded-controller" name
+" ene,kb3930" +compatible
+" dell,wyse-ariel-ec" +compatible
+h# 58 1 reg
+0 0 " system-power-controller" property
+
+" /gpio" encode-phandle ec-off-pulse-gpio# encode-int encode+ d# 0 encode-int encode+
+" /gpio" encode-phandle encode+ ec-off-type-gpio# encode-int encode+ d# 0 encode-int encode+
+" off-gpios" property
+
+\ EC IO
+: ec@ ( reg# -- byte ) " reg-w@" $call-parent ;
+: ec! ( byte reg# -- ) " reg-w!" $call-parent ;
+
+\ EC RAM Access
+h# 00 constant data-in
+h# 81 constant ram-in
+h# 80 constant ram-out
+
+: ram@ ( adr -- val ) 8 << ram-in ec! data-in ec@ h# ff and ;
+: ram! ( val adr -- ) 8 << or ram-out ec! ;
+
+\ EC RAM Addresses
+
+\ Power button LED:
+h# 01 constant blue-led
+\ Two-color combinded status LED:
+h# 02 constant amber-led
+h# 03 constant green-led
+\ Front side USB ports:
+\ h# 11 (unidentified, probably internal WLAN USB connector?)
+h# 12 constant usb1 \ .----. .----. .----.
+h# 13 constant usb2 \ (o) |USB3| |USB2| |USB1| = (') WYSE
+h# 14 constant usb3 \ `----' `----' `----'
+\ Back side USB port:
+h# 15 constant usb4
+\ Power management
+h# 16 constant on-after-power-resume
+h# 20 constant wake-on-lan
+h# 21 constant wake-on-usb
+\ h# 22 (unidentified)
+\ EC firmware identification:
+h# 30 constant model-id \ [char] 0
+h# 31 constant version-maj \ h# 03
+h# 32 constant version-min \ h# 02
+
+\ LED Modes
+h# 00 constant off
+h# 01 constant still
+h# 02 constant fade
+h# 03 constant blink
+
+: leds-start ( -- )
+ my-unit " set-address" $call-parent
+ off amber-led ram!
+ still green-led ram!
+;
+
+: leds-boot ( -- )
+ my-unit " set-address" $call-parent
+ blink green-led ram!
+;
+
+: usb-ports-power-on ( -- )
+ my-unit " set-address" $call-parent
+ 1 usb1 ram!
+ 1 usb2 ram!
+ 1 usb3 ram!
+ 1 usb4 ram!
+;
+
+: open ( -- okay ) true ;
+: close ( -- ) ;
+
+: off-pulse ( -- )
+ \ We're supposed to signal readiness to power off to the EC with a
+ \ 10 MHz pulse. Delays of 48ms - 68ms seem to create a wave that's
+ \ good enough for the EC. Choose the middle value
+ ec-off-pulse-gpio# gpio-dir-out
+ begin ec-off-pulse-gpio# dup gpio-clr d# 58 ms gpio-set d# 58 ms again
+;
+
+: power-off ( -- )
+ ec-off-type-gpio# dup gpio-dir-out gpio-set
+ off-pulse
+;
+
+: reboot ( -- )
+ ec-off-type-gpio# dup gpio-dir-out gpio-clr
+ off-pulse
+;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2020 Lubomir Rintel <lkundrak@v3.sk>
+\
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END