aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 20:51:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 20:51:54 -0400
commit20b4fb485227404329e41ad15588afad3df23050 (patch)
treef3e099f0ab3da8a93b447203e294d2bb22f6dc05 /drivers/usb/gadget
parentb9394d8a657cd3c064fa432aa0905c1b58b38fe9 (diff)
parentac3e3c5b1164397656df81b9e9ab4991184d3236 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull VFS updates from Al Viro, Misc cleanups all over the place, mainly wrt /proc interfaces (switch create_proc_entry to proc_create(), get rid of the deprecated create_proc_read_entry() in favor of using proc_create_data() and seq_file etc). 7kloc removed. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits) don't bother with deferred freeing of fdtables proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h proc: Make the PROC_I() and PDE() macros internal to procfs proc: Supply a function to remove a proc entry by PDE take cgroup_open() and cpuset_open() to fs/proc/base.c ppc: Clean up scanlog ppc: Clean up rtas_flash driver somewhat hostap: proc: Use remove_proc_subtree() drm: proc: Use remove_proc_subtree() drm: proc: Use minor->index to label things, not PDE->name drm: Constify drm_proc_list[] zoran: Don't print proc_dir_entry data in debug reiserfs: Don't access the proc_dir_entry in r_open(), r_start() r_show() proc: Supply an accessor for getting the data from a PDE's parent airo: Use remove_proc_subtree() rtl8192u: Don't need to save device proc dir PDE rtl8187se: Use a dir under /proc/net/r8180/ proc: Add proc_mkdir_data() proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h} proc: Move PDE_NET() to fs/proc/proc_net.c ...
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r--drivers/usb/gadget/at91_udc.c2
-rw-r--r--drivers/usb/gadget/f_fs.c2
-rw-r--r--drivers/usb/gadget/fsl_udc_core.c124
-rw-r--r--drivers/usb/gadget/goku_udc.c89
-rw-r--r--drivers/usb/gadget/inode.c2
-rw-r--r--drivers/usb/gadget/lpc32xx_udc.c2
-rw-r--r--drivers/usb/gadget/rndis.c4
7 files changed, 86 insertions, 139 deletions
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index a690d64217f4..073b938f9135 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -221,7 +221,7 @@ static int proc_udc_show(struct seq_file *s, void *unused)
221 221
222static int proc_udc_open(struct inode *inode, struct file *file) 222static int proc_udc_open(struct inode *inode, struct file *file)
223{ 223{
224 return single_open(file, proc_udc_show, PDE(inode)->data); 224 return single_open(file, proc_udc_show, PDE_DATA(inode));
225} 225}
226 226
227static const struct file_operations proc_ops = { 227static const struct file_operations proc_ops = {
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
index c377ff84bf2c..f394f295d63d 100644
--- a/drivers/usb/gadget/f_fs.c
+++ b/drivers/usb/gadget/f_fs.c
@@ -727,7 +727,6 @@ static long ffs_ep0_ioctl(struct file *file, unsigned code, unsigned long value)
727} 727}
728 728
729static const struct file_operations ffs_ep0_operations = { 729static const struct file_operations ffs_ep0_operations = {
730 .owner = THIS_MODULE,
731 .llseek = no_llseek, 730 .llseek = no_llseek,
732 731
733 .open = ffs_ep0_open, 732 .open = ffs_ep0_open,
@@ -947,7 +946,6 @@ static long ffs_epfile_ioctl(struct file *file, unsigned code,
947} 946}
948 947
949static const struct file_operations ffs_epfile_operations = { 948static const struct file_operations ffs_epfile_operations = {
950 .owner = THIS_MODULE,
951 .llseek = no_llseek, 949 .llseek = no_llseek,
952 950
953 .open = ffs_epfile_open, 951 .open = ffs_epfile_open,
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index 7c2a101d19ac..2d8c1cfea699 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2010,47 +2010,37 @@ static int fsl_udc_stop(struct usb_gadget *g,
2010 2010
2011static const char proc_filename[] = "driver/fsl_usb2_udc"; 2011static const char proc_filename[] = "driver/fsl_usb2_udc";
2012 2012
2013static int fsl_proc_read(char *page, char **start, off_t off, int count, 2013static int fsl_proc_read(struct seq_file *m, void *v)
2014 int *eof, void *_dev)
2015{ 2014{
2016 char *buf = page;
2017 char *next = buf;
2018 unsigned size = count;
2019 unsigned long flags; 2015 unsigned long flags;
2020 int t, i; 2016 int i;
2021 u32 tmp_reg; 2017 u32 tmp_reg;
2022 struct fsl_ep *ep = NULL; 2018 struct fsl_ep *ep = NULL;
2023 struct fsl_req *req; 2019 struct fsl_req *req;
2024 2020
2025 struct fsl_udc *udc = udc_controller; 2021 struct fsl_udc *udc = udc_controller;
2026 if (off != 0)
2027 return 0;
2028 2022
2029 spin_lock_irqsave(&udc->lock, flags); 2023 spin_lock_irqsave(&udc->lock, flags);
2030 2024
2031 /* ------basic driver information ---- */ 2025 /* ------basic driver information ---- */
2032 t = scnprintf(next, size, 2026 seq_printf(m,
2033 DRIVER_DESC "\n" 2027 DRIVER_DESC "\n"
2034 "%s version: %s\n" 2028 "%s version: %s\n"
2035 "Gadget driver: %s\n\n", 2029 "Gadget driver: %s\n\n",
2036 driver_name, DRIVER_VERSION, 2030 driver_name, DRIVER_VERSION,
2037 udc->driver ? udc->driver->driver.name : "(none)"); 2031 udc->driver ? udc->driver->driver.name : "(none)");
2038 size -= t;
2039 next += t;
2040 2032
2041 /* ------ DR Registers ----- */ 2033 /* ------ DR Registers ----- */
2042 tmp_reg = fsl_readl(&dr_regs->usbcmd); 2034 tmp_reg = fsl_readl(&dr_regs->usbcmd);
2043 t = scnprintf(next, size, 2035 seq_printf(m,
2044 "USBCMD reg:\n" 2036 "USBCMD reg:\n"
2045 "SetupTW: %d\n" 2037 "SetupTW: %d\n"
2046 "Run/Stop: %s\n\n", 2038 "Run/Stop: %s\n\n",
2047 (tmp_reg & USB_CMD_SUTW) ? 1 : 0, 2039 (tmp_reg & USB_CMD_SUTW) ? 1 : 0,
2048 (tmp_reg & USB_CMD_RUN_STOP) ? "Run" : "Stop"); 2040 (tmp_reg & USB_CMD_RUN_STOP) ? "Run" : "Stop");
2049 size -= t;
2050 next += t;
2051 2041
2052 tmp_reg = fsl_readl(&dr_regs->usbsts); 2042 tmp_reg = fsl_readl(&dr_regs->usbsts);
2053 t = scnprintf(next, size, 2043 seq_printf(m,
2054 "USB Status Reg:\n" 2044 "USB Status Reg:\n"
2055 "Dr Suspend: %d Reset Received: %d System Error: %s " 2045 "Dr Suspend: %d Reset Received: %d System Error: %s "
2056 "USB Error Interrupt: %s\n\n", 2046 "USB Error Interrupt: %s\n\n",
@@ -2058,11 +2048,9 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2058 (tmp_reg & USB_STS_RESET) ? 1 : 0, 2048 (tmp_reg & USB_STS_RESET) ? 1 : 0,
2059 (tmp_reg & USB_STS_SYS_ERR) ? "Err" : "Normal", 2049 (tmp_reg & USB_STS_SYS_ERR) ? "Err" : "Normal",
2060 (tmp_reg & USB_STS_ERR) ? "Err detected" : "No err"); 2050 (tmp_reg & USB_STS_ERR) ? "Err detected" : "No err");
2061 size -= t;
2062 next += t;
2063 2051
2064 tmp_reg = fsl_readl(&dr_regs->usbintr); 2052 tmp_reg = fsl_readl(&dr_regs->usbintr);
2065 t = scnprintf(next, size, 2053 seq_printf(m,
2066 "USB Interrupt Enable Reg:\n" 2054 "USB Interrupt Enable Reg:\n"
2067 "Sleep Enable: %d SOF Received Enable: %d " 2055 "Sleep Enable: %d SOF Received Enable: %d "
2068 "Reset Enable: %d\n" 2056 "Reset Enable: %d\n"
@@ -2076,33 +2064,25 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2076 (tmp_reg & USB_INTR_PTC_DETECT_EN) ? 1 : 0, 2064 (tmp_reg & USB_INTR_PTC_DETECT_EN) ? 1 : 0,
2077 (tmp_reg & USB_INTR_ERR_INT_EN) ? 1 : 0, 2065 (tmp_reg & USB_INTR_ERR_INT_EN) ? 1 : 0,
2078 (tmp_reg & USB_INTR_INT_EN) ? 1 : 0); 2066 (tmp_reg & USB_INTR_INT_EN) ? 1 : 0);
2079 size -= t;
2080 next += t;
2081 2067
2082 tmp_reg = fsl_readl(&dr_regs->frindex); 2068 tmp_reg = fsl_readl(&dr_regs->frindex);
2083 t = scnprintf(next, size, 2069 seq_printf(m,
2084 "USB Frame Index Reg: Frame Number is 0x%x\n\n", 2070 "USB Frame Index Reg: Frame Number is 0x%x\n\n",
2085 (tmp_reg & USB_FRINDEX_MASKS)); 2071 (tmp_reg & USB_FRINDEX_MASKS));
2086 size -= t;
2087 next += t;
2088 2072
2089 tmp_reg = fsl_readl(&dr_regs->deviceaddr); 2073 tmp_reg = fsl_readl(&dr_regs->deviceaddr);
2090 t = scnprintf(next, size, 2074 seq_printf(m,
2091 "USB Device Address Reg: Device Addr is 0x%x\n\n", 2075 "USB Device Address Reg: Device Addr is 0x%x\n\n",
2092 (tmp_reg & USB_DEVICE_ADDRESS_MASK)); 2076 (tmp_reg & USB_DEVICE_ADDRESS_MASK));
2093 size -= t;
2094 next += t;
2095 2077
2096 tmp_reg = fsl_readl(&dr_regs->endpointlistaddr); 2078 tmp_reg = fsl_readl(&dr_regs->endpointlistaddr);
2097 t = scnprintf(next, size, 2079 seq_printf(m,
2098 "USB Endpoint List Address Reg: " 2080 "USB Endpoint List Address Reg: "
2099 "Device Addr is 0x%x\n\n", 2081 "Device Addr is 0x%x\n\n",
2100 (tmp_reg & USB_EP_LIST_ADDRESS_MASK)); 2082 (tmp_reg & USB_EP_LIST_ADDRESS_MASK));
2101 size -= t;
2102 next += t;
2103 2083
2104 tmp_reg = fsl_readl(&dr_regs->portsc1); 2084 tmp_reg = fsl_readl(&dr_regs->portsc1);
2105 t = scnprintf(next, size, 2085 seq_printf(m,
2106 "USB Port Status&Control Reg:\n" 2086 "USB Port Status&Control Reg:\n"
2107 "Port Transceiver Type : %s Port Speed: %s\n" 2087 "Port Transceiver Type : %s Port Speed: %s\n"
2108 "PHY Low Power Suspend: %s Port Reset: %s " 2088 "PHY Low Power Suspend: %s Port Reset: %s "
@@ -2111,7 +2091,7 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2111 "Port Enable/Disable Change: %s\n" 2091 "Port Enable/Disable Change: %s\n"
2112 "Port Enabled/Disabled: %s " 2092 "Port Enabled/Disabled: %s "
2113 "Current Connect Status: %s\n\n", ( { 2093 "Current Connect Status: %s\n\n", ( {
2114 char *s; 2094 const char *s;
2115 switch (tmp_reg & PORTSCX_PTS_FSLS) { 2095 switch (tmp_reg & PORTSCX_PTS_FSLS) {
2116 case PORTSCX_PTS_UTMI: 2096 case PORTSCX_PTS_UTMI:
2117 s = "UTMI"; break; 2097 s = "UTMI"; break;
@@ -2137,13 +2117,11 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2137 "Not correct", 2117 "Not correct",
2138 (tmp_reg & PORTSCX_CURRENT_CONNECT_STATUS) ? 2118 (tmp_reg & PORTSCX_CURRENT_CONNECT_STATUS) ?
2139 "Attached" : "Not-Att"); 2119 "Attached" : "Not-Att");
2140 size -= t;
2141 next += t;
2142 2120
2143 tmp_reg = fsl_readl(&dr_regs->usbmode); 2121 tmp_reg = fsl_readl(&dr_regs->usbmode);
2144 t = scnprintf(next, size, 2122 seq_printf(m,
2145 "USB Mode Reg: Controller Mode is: %s\n\n", ( { 2123 "USB Mode Reg: Controller Mode is: %s\n\n", ( {
2146 char *s; 2124 const char *s;
2147 switch (tmp_reg & USB_MODE_CTRL_MODE_HOST) { 2125 switch (tmp_reg & USB_MODE_CTRL_MODE_HOST) {
2148 case USB_MODE_CTRL_MODE_IDLE: 2126 case USB_MODE_CTRL_MODE_IDLE:
2149 s = "Idle"; break; 2127 s = "Idle"; break;
@@ -2156,103 +2134,87 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2156 } 2134 }
2157 s; 2135 s;
2158 } )); 2136 } ));
2159 size -= t;
2160 next += t;
2161 2137
2162 tmp_reg = fsl_readl(&dr_regs->endptsetupstat); 2138 tmp_reg = fsl_readl(&dr_regs->endptsetupstat);
2163 t = scnprintf(next, size, 2139 seq_printf(m,
2164 "Endpoint Setup Status Reg: SETUP on ep 0x%x\n\n", 2140 "Endpoint Setup Status Reg: SETUP on ep 0x%x\n\n",
2165 (tmp_reg & EP_SETUP_STATUS_MASK)); 2141 (tmp_reg & EP_SETUP_STATUS_MASK));
2166 size -= t;
2167 next += t;
2168 2142
2169 for (i = 0; i < udc->max_ep / 2; i++) { 2143 for (i = 0; i < udc->max_ep / 2; i++) {
2170 tmp_reg = fsl_readl(&dr_regs->endptctrl[i]); 2144 tmp_reg = fsl_readl(&dr_regs->endptctrl[i]);
2171 t = scnprintf(next, size, "EP Ctrl Reg [0x%x]: = [0x%x]\n", 2145 seq_printf(m, "EP Ctrl Reg [0x%x]: = [0x%x]\n", i, tmp_reg);
2172 i, tmp_reg);
2173 size -= t;
2174 next += t;
2175 } 2146 }
2176 tmp_reg = fsl_readl(&dr_regs->endpointprime); 2147 tmp_reg = fsl_readl(&dr_regs->endpointprime);
2177 t = scnprintf(next, size, "EP Prime Reg = [0x%x]\n\n", tmp_reg); 2148 seq_printf(m, "EP Prime Reg = [0x%x]\n\n", tmp_reg);
2178 size -= t;
2179 next += t;
2180 2149
2181#ifndef CONFIG_ARCH_MXC 2150#ifndef CONFIG_ARCH_MXC
2182 if (udc->pdata->have_sysif_regs) { 2151 if (udc->pdata->have_sysif_regs) {
2183 tmp_reg = usb_sys_regs->snoop1; 2152 tmp_reg = usb_sys_regs->snoop1;
2184 t = scnprintf(next, size, "Snoop1 Reg : = [0x%x]\n\n", tmp_reg); 2153 seq_printf(m, "Snoop1 Reg : = [0x%x]\n\n", tmp_reg);
2185 size -= t;
2186 next += t;
2187 2154
2188 tmp_reg = usb_sys_regs->control; 2155 tmp_reg = usb_sys_regs->control;
2189 t = scnprintf(next, size, "General Control Reg : = [0x%x]\n\n", 2156 seq_printf(m, "General Control Reg : = [0x%x]\n\n", tmp_reg);
2190 tmp_reg);
2191 size -= t;
2192 next += t;
2193 } 2157 }
2194#endif 2158#endif
2195 2159
2196 /* ------fsl_udc, fsl_ep, fsl_request structure information ----- */ 2160 /* ------fsl_udc, fsl_ep, fsl_request structure information ----- */
2197 ep = &udc->eps[0]; 2161 ep = &udc->eps[0];
2198 t = scnprintf(next, size, "For %s Maxpkt is 0x%x index is 0x%x\n", 2162 seq_printf(m, "For %s Maxpkt is 0x%x index is 0x%x\n",
2199 ep->ep.name, ep_maxpacket(ep), ep_index(ep)); 2163 ep->ep.name, ep_maxpacket(ep), ep_index(ep));
2200 size -= t;
2201 next += t;
2202 2164
2203 if (list_empty(&ep->queue)) { 2165 if (list_empty(&ep->queue)) {
2204 t = scnprintf(next, size, "its req queue is empty\n\n"); 2166 seq_puts(m, "its req queue is empty\n\n");
2205 size -= t;
2206 next += t;
2207 } else { 2167 } else {
2208 list_for_each_entry(req, &ep->queue, queue) { 2168 list_for_each_entry(req, &ep->queue, queue) {
2209 t = scnprintf(next, size, 2169 seq_printf(m,
2210 "req %p actual 0x%x length 0x%x buf %p\n", 2170 "req %p actual 0x%x length 0x%x buf %p\n",
2211 &req->req, req->req.actual, 2171 &req->req, req->req.actual,
2212 req->req.length, req->req.buf); 2172 req->req.length, req->req.buf);
2213 size -= t;
2214 next += t;
2215 } 2173 }
2216 } 2174 }
2217 /* other gadget->eplist ep */ 2175 /* other gadget->eplist ep */
2218 list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) { 2176 list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
2219 if (ep->ep.desc) { 2177 if (ep->ep.desc) {
2220 t = scnprintf(next, size, 2178 seq_printf(m,
2221 "\nFor %s Maxpkt is 0x%x " 2179 "\nFor %s Maxpkt is 0x%x "
2222 "index is 0x%x\n", 2180 "index is 0x%x\n",
2223 ep->ep.name, ep_maxpacket(ep), 2181 ep->ep.name, ep_maxpacket(ep),
2224 ep_index(ep)); 2182 ep_index(ep));
2225 size -= t;
2226 next += t;
2227 2183
2228 if (list_empty(&ep->queue)) { 2184 if (list_empty(&ep->queue)) {
2229 t = scnprintf(next, size, 2185 seq_puts(m, "its req queue is empty\n\n");
2230 "its req queue is empty\n\n");
2231 size -= t;
2232 next += t;
2233 } else { 2186 } else {
2234 list_for_each_entry(req, &ep->queue, queue) { 2187 list_for_each_entry(req, &ep->queue, queue) {
2235 t = scnprintf(next, size, 2188 seq_printf(m,
2236 "req %p actual 0x%x length " 2189 "req %p actual 0x%x length "
2237 "0x%x buf %p\n", 2190 "0x%x buf %p\n",
2238 &req->req, req->req.actual, 2191 &req->req, req->req.actual,
2239 req->req.length, req->req.buf); 2192 req->req.length, req->req.buf);
2240 size -= t; 2193 } /* end for each_entry of ep req */
2241 next += t; 2194 } /* end for else */
2242 } /* end for each_entry of ep req */ 2195 } /* end for if(ep->queue) */
2243 } /* end for else */ 2196 } /* end (ep->desc) */
2244 } /* end for if(ep->queue) */
2245 } /* end (ep->desc) */
2246 2197
2247 spin_unlock_irqrestore(&udc->lock, flags); 2198 spin_unlock_irqrestore(&udc->lock, flags);
2199 return 0;
2200}
2248 2201
2249 *eof = 1; 2202/*
2250 return count - size; 2203 * seq_file wrappers for procfile show routines.
2204 */
2205static int fsl_proc_open(struct inode *inode, struct file *file)
2206{
2207 return single_open(file, fsl_proc_read, NULL);
2251} 2208}
2252 2209
2253#define create_proc_file() create_proc_read_entry(proc_filename, \ 2210static const struct file_operations fsl_proc_fops = {
2254 0, NULL, fsl_proc_read, NULL) 2211 .open = fsl_proc_open,
2212 .read = seq_read,
2213 .llseek = seq_lseek,
2214 .release = seq_release,
2215};
2255 2216
2217#define create_proc_file() proc_create(proc_filename, 0, NULL, &fsl_proc_fops)
2256#define remove_proc_file() remove_proc_entry(proc_filename, NULL) 2218#define remove_proc_file() remove_proc_entry(proc_filename, NULL)
2257 2219
2258#else /* !CONFIG_USB_GADGET_DEBUG_FILES */ 2220#else /* !CONFIG_USB_GADGET_DEBUG_FILES */
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index 991aba390d9d..480eeb7cfd92 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -35,6 +35,7 @@
35#include <linux/list.h> 35#include <linux/list.h>
36#include <linux/interrupt.h> 36#include <linux/interrupt.h>
37#include <linux/proc_fs.h> 37#include <linux/proc_fs.h>
38#include <linux/seq_file.h>
38#include <linux/device.h> 39#include <linux/device.h>
39#include <linux/usb/ch9.h> 40#include <linux/usb/ch9.h>
40#include <linux/usb/gadget.h> 41#include <linux/usb/gadget.h>
@@ -1005,7 +1006,7 @@ static const struct usb_gadget_ops goku_ops = {
1005 1006
1006/*-------------------------------------------------------------------------*/ 1007/*-------------------------------------------------------------------------*/
1007 1008
1008static inline char *dmastr(void) 1009static inline const char *dmastr(void)
1009{ 1010{
1010 if (use_dma == 0) 1011 if (use_dma == 0)
1011 return "(dma disabled)"; 1012 return "(dma disabled)";
@@ -1022,13 +1023,10 @@ static const char proc_node_name [] = "driver/udc";
1022#define FOURBITS "%s%s%s%s" 1023#define FOURBITS "%s%s%s%s"
1023#define EIGHTBITS FOURBITS FOURBITS 1024#define EIGHTBITS FOURBITS FOURBITS
1024 1025
1025static void 1026static void dump_intmask(struct seq_file *m, const char *label, u32 mask)
1026dump_intmask(const char *label, u32 mask, char **next, unsigned *size)
1027{ 1027{
1028 int t;
1029
1030 /* int_status is the same format ... */ 1028 /* int_status is the same format ... */
1031 t = scnprintf(*next, *size, 1029 seq_printf(m,
1032 "%s %05X =" FOURBITS EIGHTBITS EIGHTBITS "\n", 1030 "%s %05X =" FOURBITS EIGHTBITS EIGHTBITS "\n",
1033 label, mask, 1031 label, mask,
1034 (mask & INT_PWRDETECT) ? " power" : "", 1032 (mask & INT_PWRDETECT) ? " power" : "",
@@ -1055,33 +1053,23 @@ dump_intmask(const char *label, u32 mask, char **next, unsigned *size)
1055 (mask & INT_ENDPOINT0) ? " ep0" : "", 1053 (mask & INT_ENDPOINT0) ? " ep0" : "",
1056 (mask & INT_USBRESET) ? " reset" : "", 1054 (mask & INT_USBRESET) ? " reset" : "",
1057 (mask & INT_SUSPEND) ? " suspend" : ""); 1055 (mask & INT_SUSPEND) ? " suspend" : "");
1058 *size -= t;
1059 *next += t;
1060} 1056}
1061 1057
1062 1058
1063static int 1059static int udc_proc_read(struct seq_file *m, void *v)
1064udc_proc_read(char *buffer, char **start, off_t off, int count,
1065 int *eof, void *_dev)
1066{ 1060{
1067 char *buf = buffer; 1061 struct goku_udc *dev = m->private;
1068 struct goku_udc *dev = _dev;
1069 struct goku_udc_regs __iomem *regs = dev->regs; 1062 struct goku_udc_regs __iomem *regs = dev->regs;
1070 char *next = buf;
1071 unsigned size = count;
1072 unsigned long flags; 1063 unsigned long flags;
1073 int i, t, is_usb_connected; 1064 int i, is_usb_connected;
1074 u32 tmp; 1065 u32 tmp;
1075 1066
1076 if (off != 0)
1077 return 0;
1078
1079 local_irq_save(flags); 1067 local_irq_save(flags);
1080 1068
1081 /* basic device status */ 1069 /* basic device status */
1082 tmp = readl(&regs->power_detect); 1070 tmp = readl(&regs->power_detect);
1083 is_usb_connected = tmp & PW_DETECT; 1071 is_usb_connected = tmp & PW_DETECT;
1084 t = scnprintf(next, size, 1072 seq_printf(m,
1085 "%s - %s\n" 1073 "%s - %s\n"
1086 "%s version: %s %s\n" 1074 "%s version: %s %s\n"
1087 "Gadget driver: %s\n" 1075 "Gadget driver: %s\n"
@@ -1093,7 +1081,7 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1093 is_usb_connected 1081 is_usb_connected
1094 ? ((tmp & PW_PULLUP) ? "full speed" : "powered") 1082 ? ((tmp & PW_PULLUP) ? "full speed" : "powered")
1095 : "disconnected", 1083 : "disconnected",
1096 ({char *state; 1084 ({const char *state;
1097 switch(dev->ep0state){ 1085 switch(dev->ep0state){
1098 case EP0_DISCONNECT: state = "ep0_disconnect"; break; 1086 case EP0_DISCONNECT: state = "ep0_disconnect"; break;
1099 case EP0_IDLE: state = "ep0_idle"; break; 1087 case EP0_IDLE: state = "ep0_idle"; break;
@@ -1105,27 +1093,24 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1105 default: state = "ep0_?"; break; 1093 default: state = "ep0_?"; break;
1106 } state; }) 1094 } state; })
1107 ); 1095 );
1108 size -= t;
1109 next += t;
1110 1096
1111 dump_intmask("int_status", readl(&regs->int_status), &next, &size); 1097 dump_intmask(m, "int_status", readl(&regs->int_status));
1112 dump_intmask("int_enable", readl(&regs->int_enable), &next, &size); 1098 dump_intmask(m, "int_enable", readl(&regs->int_enable));
1113 1099
1114 if (!is_usb_connected || !dev->driver || (tmp & PW_PULLUP) == 0) 1100 if (!is_usb_connected || !dev->driver || (tmp & PW_PULLUP) == 0)
1115 goto done; 1101 goto done;
1116 1102
1117 /* registers for (active) device and ep0 */ 1103 /* registers for (active) device and ep0 */
1118 t = scnprintf(next, size, "\nirqs %lu\ndataset %02x " 1104 if (seq_printf(m, "\nirqs %lu\ndataset %02x "
1119 "single.bcs %02x.%02x state %x addr %u\n", 1105 "single.bcs %02x.%02x state %x addr %u\n",
1120 dev->irqs, readl(&regs->DataSet), 1106 dev->irqs, readl(&regs->DataSet),
1121 readl(&regs->EPxSingle), readl(&regs->EPxBCS), 1107 readl(&regs->EPxSingle), readl(&regs->EPxBCS),
1122 readl(&regs->UsbState), 1108 readl(&regs->UsbState),
1123 readl(&regs->address)); 1109 readl(&regs->address)) < 0)
1124 size -= t; 1110 goto done;
1125 next += t;
1126 1111
1127 tmp = readl(&regs->dma_master); 1112 tmp = readl(&regs->dma_master);
1128 t = scnprintf(next, size, 1113 if (seq_printf(m,
1129 "dma %03X =" EIGHTBITS "%s %s\n", tmp, 1114 "dma %03X =" EIGHTBITS "%s %s\n", tmp,
1130 (tmp & MST_EOPB_DIS) ? " eopb-" : "", 1115 (tmp & MST_EOPB_DIS) ? " eopb-" : "",
1131 (tmp & MST_EOPB_ENA) ? " eopb+" : "", 1116 (tmp & MST_EOPB_ENA) ? " eopb+" : "",
@@ -1140,9 +1125,8 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1140 (tmp & MST_WR_ENA) ? " OUT" : "", 1125 (tmp & MST_WR_ENA) ? " OUT" : "",
1141 (tmp & MST_CONNECTION) 1126 (tmp & MST_CONNECTION)
1142 ? "ep1in/ep2out" 1127 ? "ep1in/ep2out"
1143 : "ep1out/ep2in"); 1128 : "ep1out/ep2in") < 0)
1144 size -= t; 1129 goto done;
1145 next += t;
1146 1130
1147 /* dump endpoint queues */ 1131 /* dump endpoint queues */
1148 for (i = 0; i < 4; i++) { 1132 for (i = 0; i < 4; i++) {
@@ -1153,7 +1137,7 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1153 continue; 1137 continue;
1154 1138
1155 tmp = readl(ep->reg_status); 1139 tmp = readl(ep->reg_status);
1156 t = scnprintf(next, size, 1140 if (seq_printf(m,
1157 "%s %s max %u %s, irqs %lu, " 1141 "%s %s max %u %s, irqs %lu, "
1158 "status %02x (%s) " FOURBITS "\n", 1142 "status %02x (%s) " FOURBITS "\n",
1159 ep->ep.name, 1143 ep->ep.name,
@@ -1186,18 +1170,12 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1186 (tmp & EPxSTATUS_SUSPEND) ? " suspend" : "", 1170 (tmp & EPxSTATUS_SUSPEND) ? " suspend" : "",
1187 (tmp & EPxSTATUS_FIFO_DISABLE) ? " disable" : "", 1171 (tmp & EPxSTATUS_FIFO_DISABLE) ? " disable" : "",
1188 (tmp & EPxSTATUS_STAGE_ERROR) ? " ep0stat" : "" 1172 (tmp & EPxSTATUS_STAGE_ERROR) ? " ep0stat" : ""
1189 ); 1173 ) < 0)
1190 if (t <= 0 || t > size)
1191 goto done; 1174 goto done;
1192 size -= t;
1193 next += t;
1194 1175
1195 if (list_empty(&ep->queue)) { 1176 if (list_empty(&ep->queue)) {
1196 t = scnprintf(next, size, "\t(nothing queued)\n"); 1177 if (seq_puts(m, "\t(nothing queued)\n") < 0)
1197 if (t <= 0 || t > size)
1198 goto done; 1178 goto done;
1199 size -= t;
1200 next += t;
1201 continue; 1179 continue;
1202 } 1180 }
1203 list_for_each_entry(req, &ep->queue, queue) { 1181 list_for_each_entry(req, &ep->queue, queue) {
@@ -1211,23 +1189,34 @@ udc_proc_read(char *buffer, char **start, off_t off, int count,
1211 } else 1189 } else
1212 tmp = req->req.actual; 1190 tmp = req->req.actual;
1213 1191
1214 t = scnprintf(next, size, 1192 if (seq_printf(m,
1215 "\treq %p len %u/%u buf %p\n", 1193 "\treq %p len %u/%u buf %p\n",
1216 &req->req, tmp, req->req.length, 1194 &req->req, tmp, req->req.length,
1217 req->req.buf); 1195 req->req.buf) < 0)
1218 if (t <= 0 || t > size)
1219 goto done; 1196 goto done;
1220 size -= t;
1221 next += t;
1222 } 1197 }
1223 } 1198 }
1224 1199
1225done: 1200done:
1226 local_irq_restore(flags); 1201 local_irq_restore(flags);
1227 *eof = 1; 1202 return 0;
1228 return count - size; 1203}
1204
1205/*
1206 * seq_file wrappers for procfile show routines.
1207 */
1208static int udc_proc_open(struct inode *inode, struct file *file)
1209{
1210 return single_open(file, udc_proc_read, PDE_DATA(file_inode(file)));
1229} 1211}
1230 1212
1213static const struct file_operations udc_proc_fops = {
1214 .open = udc_proc_open,
1215 .read = seq_read,
1216 .llseek = seq_lseek,
1217 .release = seq_release,
1218};
1219
1231#endif /* CONFIG_USB_GADGET_DEBUG_FILES */ 1220#endif /* CONFIG_USB_GADGET_DEBUG_FILES */
1232 1221
1233/*-------------------------------------------------------------------------*/ 1222/*-------------------------------------------------------------------------*/
@@ -1796,7 +1785,7 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1796 1785
1797 1786
1798#ifdef CONFIG_USB_GADGET_DEBUG_FILES 1787#ifdef CONFIG_USB_GADGET_DEBUG_FILES
1799 create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev); 1788 proc_create_data(proc_node_name, 0, NULL, &udc_proc_fops, dev);
1800#endif 1789#endif
1801 1790
1802 retval = usb_add_gadget_udc_release(&pdev->dev, &dev->gadget, 1791 retval = usb_add_gadget_udc_release(&pdev->dev, &dev->gadget,
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
index e2b2e9cf254a..dda0dc4a5567 100644
--- a/drivers/usb/gadget/inode.c
+++ b/drivers/usb/gadget/inode.c
@@ -887,7 +887,6 @@ ep_open (struct inode *inode, struct file *fd)
887 887
888/* used before endpoint configuration */ 888/* used before endpoint configuration */
889static const struct file_operations ep_config_operations = { 889static const struct file_operations ep_config_operations = {
890 .owner = THIS_MODULE,
891 .llseek = no_llseek, 890 .llseek = no_llseek,
892 891
893 .open = ep_open, 892 .open = ep_open,
@@ -1940,7 +1939,6 @@ dev_open (struct inode *inode, struct file *fd)
1940} 1939}
1941 1940
1942static const struct file_operations dev_init_operations = { 1941static const struct file_operations dev_init_operations = {
1943 .owner = THIS_MODULE,
1944 .llseek = no_llseek, 1942 .llseek = no_llseek,
1945 1943
1946 .open = dev_open, 1944 .open = dev_open,
diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
index b943d8cdfbf7..67128be1e1b7 100644
--- a/drivers/usb/gadget/lpc32xx_udc.c
+++ b/drivers/usb/gadget/lpc32xx_udc.c
@@ -565,7 +565,7 @@ static int proc_udc_show(struct seq_file *s, void *unused)
565 565
566static int proc_udc_open(struct inode *inode, struct file *file) 566static int proc_udc_open(struct inode *inode, struct file *file)
567{ 567{
568 return single_open(file, proc_udc_show, PDE(inode)->data); 568 return single_open(file, proc_udc_show, PDE_DATA(inode));
569} 569}
570 570
571static const struct file_operations proc_ops = { 571static const struct file_operations proc_ops = {
diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
index d9297eebbf73..1e4cfb05f70b 100644
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -1065,7 +1065,7 @@ static int rndis_proc_show(struct seq_file *m, void *v)
1065static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, 1065static ssize_t rndis_proc_write(struct file *file, const char __user *buffer,
1066 size_t count, loff_t *ppos) 1066 size_t count, loff_t *ppos)
1067{ 1067{
1068 rndis_params *p = PDE(file_inode(file))->data; 1068 rndis_params *p = PDE_DATA(file_inode(file));
1069 u32 speed = 0; 1069 u32 speed = 0;
1070 int i, fl_speed = 0; 1070 int i, fl_speed = 0;
1071 1071
@@ -1109,7 +1109,7 @@ static ssize_t rndis_proc_write(struct file *file, const char __user *buffer,
1109 1109
1110static int rndis_proc_open(struct inode *inode, struct file *file) 1110static int rndis_proc_open(struct inode *inode, struct file *file)
1111{ 1111{
1112 return single_open(file, rndis_proc_show, PDE(inode)->data); 1112 return single_open(file, rndis_proc_show, PDE_DATA(inode));
1113} 1113}
1114 1114
1115static const struct file_operations rndis_proc_fops = { 1115static const struct file_operations rndis_proc_fops = {