diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-01 20:51:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-01 20:51:54 -0400 |
commit | 20b4fb485227404329e41ad15588afad3df23050 (patch) | |
tree | f3e099f0ab3da8a93b447203e294d2bb22f6dc05 /drivers/usb/gadget | |
parent | b9394d8a657cd3c064fa432aa0905c1b58b38fe9 (diff) | |
parent | ac3e3c5b1164397656df81b9e9ab4991184d3236 (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.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/f_fs.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/fsl_udc_core.c | 124 | ||||
-rw-r--r-- | drivers/usb/gadget/goku_udc.c | 89 | ||||
-rw-r--r-- | drivers/usb/gadget/inode.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/lpc32xx_udc.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/rndis.c | 4 |
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 | ||
222 | static int proc_udc_open(struct inode *inode, struct file *file) | 222 | static 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 | ||
227 | static const struct file_operations proc_ops = { | 227 | static 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 | ||
729 | static const struct file_operations ffs_ep0_operations = { | 729 | static 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 | ||
949 | static const struct file_operations ffs_epfile_operations = { | 948 | static 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 | ||
2011 | static const char proc_filename[] = "driver/fsl_usb2_udc"; | 2011 | static const char proc_filename[] = "driver/fsl_usb2_udc"; |
2012 | 2012 | ||
2013 | static int fsl_proc_read(char *page, char **start, off_t off, int count, | 2013 | static 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 | */ | ||
2205 | static 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, \ | 2210 | static 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 | ||
1008 | static inline char *dmastr(void) | 1009 | static 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 | ||
1025 | static void | 1026 | static void dump_intmask(struct seq_file *m, const char *label, u32 mask) |
1026 | dump_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 | ||
1063 | static int | 1059 | static int udc_proc_read(struct seq_file *m, void *v) |
1064 | udc_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(®s->power_detect); | 1070 | tmp = readl(®s->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(®s->int_status), &next, &size); | 1097 | dump_intmask(m, "int_status", readl(®s->int_status)); |
1112 | dump_intmask("int_enable", readl(®s->int_enable), &next, &size); | 1098 | dump_intmask(m, "int_enable", readl(®s->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(®s->DataSet), | 1106 | dev->irqs, readl(®s->DataSet), |
1121 | readl(®s->EPxSingle), readl(®s->EPxBCS), | 1107 | readl(®s->EPxSingle), readl(®s->EPxBCS), |
1122 | readl(®s->UsbState), | 1108 | readl(®s->UsbState), |
1123 | readl(®s->address)); | 1109 | readl(®s->address)) < 0) |
1124 | size -= t; | 1110 | goto done; |
1125 | next += t; | ||
1126 | 1111 | ||
1127 | tmp = readl(®s->dma_master); | 1112 | tmp = readl(®s->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 | ||
1225 | done: | 1200 | done: |
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 | */ | ||
1208 | static 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 | ||
1213 | static 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 */ |
889 | static const struct file_operations ep_config_operations = { | 889 | static 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 | ||
1942 | static const struct file_operations dev_init_operations = { | 1941 | static 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 | ||
566 | static int proc_udc_open(struct inode *inode, struct file *file) | 566 | static 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 | ||
571 | static const struct file_operations proc_ops = { | 571 | static 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) | |||
1065 | static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, | 1065 | static 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 | ||
1110 | static int rndis_proc_open(struct inode *inode, struct file *file) | 1110 | static 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 | ||
1115 | static const struct file_operations rndis_proc_fops = { | 1115 | static const struct file_operations rndis_proc_fops = { |