blob: ccf1b422b5e65249055ccfd1ee2f098cd48fe4d2 [file] [log] [blame]
\ *****************************************************************************
\ * Copyright (c) 2004, 2007 IBM Corporation
\ * All rights reserved.
\ * This program and the accompanying materials
\ * are made available under the terms of the BSD License
\ * which accompanies this distribution, and is available at
\ * http://www.opensource.org/licenses/bsd-license.php
\ *
\ * Contributors:
\ * IBM Corporation - initial implementation
\ ****************************************************************************/
00 value kbd-addr
to kbd-addr
8 alloc-mem to kbd-report
4 chars alloc-mem value kbd-data
: rw-endpoint
s" rw-endpoint" $call-parent ;
: controlxfer
s" controlxfer" $call-parent ;
: control-std-get-device-descriptor
s" control-std-get-device-descriptor" $call-parent ;
: control-std-get-configuration-descriptor
s" control-std-get-configuration-descriptor" $call-parent ;
: control-std-set-configuration
s" control-std-set-configuration" $call-parent ;
: control-cls-set-protocol ( reportvalue FuncAddr -- TRUE|FALSE )
to temp1
to temp2
210b000000000100 setup-packet !
temp2 kbd-data l!-le
1 kbd-data 1 setup-packet DEFAULT-CONTROL-MPS temp1 controlxfer
;
: control-cls-set-idle ( reportvalue FuncAddr -- TRUE|FALSE )
to temp1
to temp2
210a000000000000 setup-packet !
temp2 kbd-data l!-le
0 kbd-data 0 setup-packet DEFAULT-CONTROL-MPS temp1 controlxfer
;
: control-std-get-report-descriptor ( data-buffer data-len MPS FuncAddr -- TRUE|FALSE )
to temp1
to temp2
to temp3
8106002200000000 setup-packet !
temp3 setup-packet 6 + w!-le
0 swap temp3 setup-packet temp2 temp1 controlxfer
;
: kbd-init
s" Starting to initialize keyboard" usb-debug-print
s" MPS-INTIN" get-my-property
if
s" not possible" usb-debug-print
else
decode-int nip nip to mps-int-in
then
s" INT-IN-EP-ADDR" get-my-property
if
s" not possible" usb-debug-print
else
decode-int nip nip to int-in-ep
then
7f alloc-mem to cfg-buffer
s" Allocated buffers!!" usb-debug-print
cfg-buffer 12 8 kbd-addr \ get device descriptor
control-std-get-device-descriptor
drop
\ s" dev_desc=" type cfg-buffer 12 dump cr
cfg-buffer 9 8 kbd-addr \ get config descriptor
control-std-get-configuration-descriptor
drop
\ s" cfg_desc=" type cfg-buffer 9 dump cr
cfg-buffer 5 + c@ kbd-addr \ set configuration
control-std-set-configuration
drop
s" KBDS: Set config returned" usb-debug-print
0 kbd-addr control-cls-set-protocol drop \ set protocol=boot mode
s" KBDS: Set protocol returned" usb-debug-print
0 kbd-addr control-cls-set-idle drop \ set idle
s" KBDS: Set idle returned" usb-debug-print
cfg-buffer 40 8 kbd-addr \ get report descriptor
control-std-get-report-descriptor
drop
\ s" report_desc=" type cfg-buffer 40 dump cr
s" Finished initializing keyboard" usb-debug-print
;