various changes
[ppcskel.git] / usb / uclibusb / ft232.c
1 /*
2  * Copyright (c) 2007, Benedikt Sauter <sauter@ixbat.de>
3  * All rights reserved.
4  *
5  * Short descripton of file:
6  *
7  *
8  * Redistribution and use in source and binary forms, with or without 
9  * modification, are permitted provided that the following conditions 
10  * are met:
11  *
12  *   * Redistributions of source code must retain the above copyright 
13  *     notice, this list of conditions and the following disclaimer.
14  *   * Redistributions in binary form must reproduce the above 
15  *     copyright notice, this list of conditions and the following 
16  *     disclaimer in the documentation and/or other materials provided 
17  *     with the distribution.
18  *   * Neither the name of the FH Augsburg nor the names of its 
19  *     contributors may be used to endorse or promote products derived 
20  *     from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
25  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
26  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34
35 #include <lib/types.h>
36
37 #include <core/usb.h>
38 #include <usbspec/usb11spec.h>
39
40 #include "ft232.h"
41
42 /** 
43  * Find and open an FT232 on bus.
44  */
45 usb_device * usb_ft232_open()
46 {
47   usb_device * dev = usb_open(0x0403,0x6001);
48   char tmp[8];
49
50   if(dev!=NULL) {
51     usb_control_msg(dev, 0x00,SET_CONFIGURATION,0x0100, 0, 0,tmp, 8, 0);
52
53     usb_control_msg(dev, 0x40, 0,0, 0,  0,tmp, 8, 0);
54     usb_control_msg(dev, 0x40, 4,8, 0,  0,tmp, 8, 0);
55     usb_control_msg(dev, 0x40, 3,0x4138, 0,  0,tmp, 8, 0);
56     usb_control_msg(dev, 0x40, 1,0x0303, 0,  0,tmp, 8, 0);
57     usb_control_msg(dev, 0x40, 2,0, 0,  0,tmp, 8, 0);
58     usb_control_msg(dev, 0x40, 1,0x0303, 0,  0,tmp, 8, 0);
59   } else {
60     dev = NULL;
61   }
62   return dev;
63 }
64
65 /**
66  * Close the opened FT232.
67  */
68 void usb_ft232_close(usb_device *dev)
69 {
70   return;
71 }
72
73 /**
74  * Send a buffer.
75  */
76 u8 usb_ft232_send(usb_device *dev,char *bytes, u8 length)
77 {
78   char tmp[8];
79   usb_bulk_write(dev, 2, bytes, length, 0);
80   usb_control_msg(dev, 0x40, 2,0, 0,  0,tmp, 8, 0);
81   usb_control_msg(dev, 0x40, 1,0x0300, 0,  0,tmp, 8, 0);
82   return 1;
83 }
84
85 /**
86  * Receive some values.
87  */
88 u8 usb_ft232_receive(usb_device *dev,char *bytes, u8 length)
89 {
90   usb_bulk_read(dev, 1,  bytes, length,0);
91   return 1;
92 }