5 * Copyright (C) 2009 Pawel Dziepak
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 #include "arch/low/general.h"
33 class uhci
: public usb_hc
{
56 struct transfer_descriptor
{
65 volatile u32 element_ptr
;
68 typedef u32 frame_pointer
;
72 transfer_descriptor
*td
;
81 void init_structures();
82 int get_free_address();
83 void *control_transfer(int pid
, void *val
, int length
, int rlength
, u8 address
);
84 void bulk_transfer(int, void *, int, int, int);
87 void device_connected(int port
);
89 uhci() : td(0), fp(0), last_fp(0) {}
91 //virtual void init_port(int i) = 0;
93 //virtual array<char> control_transfer(usb_pid, array<char>, int, int) = 0;
95 bool init_device(p
<did
>);
97 void scan_bus(delegate
<void, int>);
99 static bool check_device(p
<did
>);
100 static void register_type();