~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to include/linux/usb/renesas_usbhs.h

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Renesas USB
 
3
 *
 
4
 * Copyright (C) 2011 Renesas Solutions Corp.
 
5
 * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 
6
 *
 
7
 * This program is distributed in the hope that it will be useful,
 
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
10
 * GNU General Public License for more details.
 
11
 *
 
12
 * You should have received a copy of the GNU General Public License
 
13
 * along with this program; if not, write to the Free Software
 
14
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
15
 *
 
16
 */
 
17
#ifndef RENESAS_USB_H
 
18
#define RENESAS_USB_H
 
19
#include <linux/platform_device.h>
 
20
#include <linux/usb/ch9.h>
 
21
 
 
22
/*
 
23
 * module type
 
24
 *
 
25
 * it will be return value from get_id
 
26
 */
 
27
enum {
 
28
        USBHS_HOST = 0,
 
29
        USBHS_GADGET,
 
30
        USBHS_MAX,
 
31
};
 
32
 
 
33
/*
 
34
 * callback functions table for driver
 
35
 *
 
36
 * These functions are called from platform for driver.
 
37
 * Callback function's pointer will be set before
 
38
 * renesas_usbhs_platform_callback :: hardware_init was called
 
39
 */
 
40
struct renesas_usbhs_driver_callback {
 
41
        int (*notify_hotplug)(struct platform_device *pdev);
 
42
};
 
43
 
 
44
/*
 
45
 * callback functions for platform
 
46
 *
 
47
 * These functions are called from driver for platform
 
48
 */
 
49
struct renesas_usbhs_platform_callback {
 
50
 
 
51
        /*
 
52
         * option:
 
53
         *
 
54
         * Hardware init function for platform.
 
55
         * it is called when driver was probed.
 
56
         */
 
57
        int (*hardware_init)(struct platform_device *pdev);
 
58
 
 
59
        /*
 
60
         * option:
 
61
         *
 
62
         * Hardware exit function for platform.
 
63
         * it is called when driver was removed
 
64
         */
 
65
        void (*hardware_exit)(struct platform_device *pdev);
 
66
 
 
67
        /*
 
68
         * option:
 
69
         *
 
70
         * Phy reset for platform
 
71
         */
 
72
        void (*phy_reset)(struct platform_device *pdev);
 
73
 
 
74
        /*
 
75
         * get USB ID function
 
76
         *  - USBHS_HOST
 
77
         *  - USBHS_GADGET
 
78
         */
 
79
        int (*get_id)(struct platform_device *pdev);
 
80
 
 
81
        /*
 
82
         * get VBUS status function.
 
83
         */
 
84
        int (*get_vbus)(struct platform_device *pdev);
 
85
};
 
86
 
 
87
/*
 
88
 * parameters for renesas usbhs
 
89
 *
 
90
 * some register needs USB chip specific parameters.
 
91
 * This struct show it to driver
 
92
 */
 
93
struct renesas_usbhs_driver_param {
 
94
        /*
 
95
         * pipe settings
 
96
         */
 
97
        u32 *pipe_type; /* array of USB_ENDPOINT_XFER_xxx (from ep0) */
 
98
        int pipe_size; /* pipe_type array size */
 
99
 
 
100
        /*
 
101
         * option:
 
102
         *
 
103
         * for BUSWAIT :: BWAIT
 
104
         * */
 
105
        int buswait_bwait;
 
106
 
 
107
        /*
 
108
         * option:
 
109
         *
 
110
         * delay time from notify_hotplug callback
 
111
         */
 
112
        int detection_delay;
 
113
};
 
114
 
 
115
/*
 
116
 * option:
 
117
 *
 
118
 * platform information for renesas_usbhs driver.
 
119
 */
 
120
struct renesas_usbhs_platform_info {
 
121
        /*
 
122
         * option:
 
123
         *
 
124
         * platform set these functions before
 
125
         * call platform_add_devices if needed
 
126
         */
 
127
        struct renesas_usbhs_platform_callback  platform_callback;
 
128
 
 
129
        /*
 
130
         * driver set these callback functions pointer.
 
131
         * platform can use it on callback functions
 
132
         */
 
133
        struct renesas_usbhs_driver_callback    driver_callback;
 
134
 
 
135
        /*
 
136
         * option:
 
137
         *
 
138
         * driver use these param for some register
 
139
         */
 
140
        struct renesas_usbhs_driver_param       driver_param;
 
141
};
 
142
 
 
143
/*
 
144
 * macro for platform
 
145
 */
 
146
#define renesas_usbhs_get_info(pdev)\
 
147
        ((struct renesas_usbhs_platform_info *)(pdev)->dev.platform_data)
 
148
 
 
149
#define renesas_usbhs_call_notify_hotplug(pdev)                         \
 
150
        ({                                                              \
 
151
                struct renesas_usbhs_driver_callback *dc;               \
 
152
                dc = &(renesas_usbhs_get_info(pdev)->driver_callback);  \
 
153
                if (dc && dc->notify_hotplug)                           \
 
154
                        dc->notify_hotplug(pdev);                       \
 
155
        })
 
156
#endif /* RENESAS_USB_H */