blob: 8d619a9564d73b764d57ebe183d2414b2d162bce [file] [log] [blame]
\ *****************************************************************************
\ * Copyright (c) 2004, 2008 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
\ ****************************************************************************/
: 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 kbd-buf kb>setup-packet !
temp2 kbd-buf kb>data l!-le
1 kbd-buf kb>data 1 kbd-buf kb>setup-packet
DEFAULT-CONTROL-MPS temp1 controlxfer
;
: control-cls-set-idle ( reportvalue FuncAddr -- TRUE|FALSE )
to temp1
to temp2
210a000000000000 kbd-buf kb>setup-packet !
temp2 kbd-buf kb>data l!-le
0 kbd-buf kb>data 0 kbd-buf kb>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 kbd-buf kb>setup-packet !
temp3 kbd-buf kb>setup-packet 6 + w!-le
0 swap temp3 kbd-buf kb>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
kbd-buf kb>cfg 12 8 kbd-addr \ get device descriptor
control-std-get-device-descriptor
drop
\ s" dev_desc=" type cfg-buffer 12 dump cr
kbd-buf kb>cfg 9 8 kbd-addr \ get config descriptor
control-std-get-configuration-descriptor
drop
\ s" cfg_desc=" type cfg-buffer 9 dump cr
kbd-buf kb>cfg 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-idle drop \ set idle
s" KBDS: Set idle returned" usb-debug-print
kbd-buf kb>cfg 3f 8 kbd-addr \ get report descriptor
control-std-get-report-descriptor
drop
\ s" report_desc=" type cfg-buffer 3f dump cr
s" Finished initializing keyboard" usb-debug-print
;