diff options
author | David Howells <dhowells@redhat.com> | 2013-04-10 08:23:50 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-04-29 15:41:53 -0400 |
commit | 77cd02c151cb6b7d81aad4802ee8b98a033863d6 (patch) | |
tree | 6b9c93bad1beff92f78a9f36bd3cff9fc7185aa9 /drivers/usb | |
parent | 96c7a22ebd2c919ed8fb93bb7c02b60aac099768 (diff) |
fsl_udc: Don't use create_proc_read_entry()
Don't use create_proc_read_entry() as that is deprecated, but rather use
proc_create_data() and seq_file instead.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Li Yang <leoli@freescale.com>
cc: Felipe Balbi <balbi@ti.com>
cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
cc: linux-usb@vger.kernel.org
cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/fsl_udc_core.c | 124 |
1 files changed, 43 insertions, 81 deletions
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 04d5fef1440c..ede70ffe1ab4 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c | |||
@@ -2038,47 +2038,37 @@ static int fsl_udc_stop(struct usb_gadget *g, | |||
2038 | 2038 | ||
2039 | static const char proc_filename[] = "driver/fsl_usb2_udc"; | 2039 | static const char proc_filename[] = "driver/fsl_usb2_udc"; |
2040 | 2040 | ||
2041 | static int fsl_proc_read(char *page, char **start, off_t off, int count, | 2041 | static int fsl_proc_read(struct seq_file *m, void *v) |
2042 | int *eof, void *_dev) | ||
2043 | { | 2042 | { |
2044 | char *buf = page; | ||
2045 | char *next = buf; | ||
2046 | unsigned size = count; | ||
2047 | unsigned long flags; | 2043 | unsigned long flags; |
2048 | int t, i; | 2044 | int i; |
2049 | u32 tmp_reg; | 2045 | u32 tmp_reg; |
2050 | struct fsl_ep *ep = NULL; | 2046 | struct fsl_ep *ep = NULL; |
2051 | struct fsl_req *req; | 2047 | struct fsl_req *req; |
2052 | 2048 | ||
2053 | struct fsl_udc *udc = udc_controller; | 2049 | struct fsl_udc *udc = udc_controller; |
2054 | if (off != 0) | ||
2055 | return 0; | ||
2056 | 2050 | ||
2057 | spin_lock_irqsave(&udc->lock, flags); | 2051 | spin_lock_irqsave(&udc->lock, flags); |
2058 | 2052 | ||
2059 | /* ------basic driver information ---- */ | 2053 | /* ------basic driver information ---- */ |
2060 | t = scnprintf(next, size, | 2054 | seq_printf(m, |
2061 | DRIVER_DESC "\n" | 2055 | DRIVER_DESC "\n" |
2062 | "%s version: %s\n" | 2056 | "%s version: %s\n" |
2063 | "Gadget driver: %s\n\n", | 2057 | "Gadget driver: %s\n\n", |
2064 | driver_name, DRIVER_VERSION, | 2058 | driver_name, DRIVER_VERSION, |
2065 | udc->driver ? udc->driver->driver.name : "(none)"); | 2059 | udc->driver ? udc->driver->driver.name : "(none)"); |
2066 | size -= t; | ||
2067 | next += t; | ||
2068 | 2060 | ||
2069 | /* ------ DR Registers ----- */ | 2061 | /* ------ DR Registers ----- */ |
2070 | tmp_reg = fsl_readl(&dr_regs->usbcmd); | 2062 | tmp_reg = fsl_readl(&dr_regs->usbcmd); |
2071 | t = scnprintf(next, size, | 2063 | seq_printf(m, |
2072 | "USBCMD reg:\n" | 2064 | "USBCMD reg:\n" |
2073 | "SetupTW: %d\n" | 2065 | "SetupTW: %d\n" |
2074 | "Run/Stop: %s\n\n", | 2066 | "Run/Stop: %s\n\n", |
2075 | (tmp_reg & USB_CMD_SUTW) ? 1 : 0, | 2067 | (tmp_reg & USB_CMD_SUTW) ? 1 : 0, |
2076 | (tmp_reg & USB_CMD_RUN_STOP) ? "Run" : "Stop"); | 2068 | (tmp_reg & USB_CMD_RUN_STOP) ? "Run" : "Stop"); |
2077 | size -= t; | ||
2078 | next += t; | ||
2079 | 2069 | ||
2080 | tmp_reg = fsl_readl(&dr_regs->usbsts); | 2070 | tmp_reg = fsl_readl(&dr_regs->usbsts); |
2081 | t = scnprintf(next, size, | 2071 | seq_printf(m, |
2082 | "USB Status Reg:\n" | 2072 | "USB Status Reg:\n" |
2083 | "Dr Suspend: %d Reset Received: %d System Error: %s " | 2073 | "Dr Suspend: %d Reset Received: %d System Error: %s " |
2084 | "USB Error Interrupt: %s\n\n", | 2074 | "USB Error Interrupt: %s\n\n", |
@@ -2086,11 +2076,9 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count, | |||
2086 | (tmp_reg & USB_STS_RESET) ? 1 : 0, | 2076 | (tmp_reg & USB_STS_RESET) ? 1 : 0, |
2087 | (tmp_reg & USB_STS_SYS_ERR) ? "Err" : "Normal", | 2077 | (tmp_reg & USB_STS_SYS_ERR) ? "Err" : "Normal", |
2088 | (tmp_reg & USB_STS_ERR) ? "Err detected" : "No err"); | 2078 | (tmp_reg & USB_STS_ERR) ? "Err detected" : "No err"); |
2089 | size -= t; | ||
2090 | next += t; | ||
2091 | 2079 | ||
2092 | tmp_reg = fsl_readl(&dr_regs->usbintr); | 2080 | tmp_reg = fsl_readl(&dr_regs->usbintr); |
2093 | t = scnprintf(next, size, | 2081 | seq_printf(m, |
2094 | "USB Interrupt Enable Reg:\n" | 2082 | "USB Interrupt Enable Reg:\n" |
2095 | "Sleep Enable: %d SOF Received Enable: %d " | 2083 | "Sleep Enable: %d SOF Received Enable: %d " |
2096 | "Reset Enable: %d\n" | 2084 | "Reset Enable: %d\n" |
@@ -2104,33 +2092,25 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count, | |||
2104 | (tmp_reg & USB_INTR_PTC_DETECT_EN) ? 1 : 0, | 2092 | (tmp_reg & USB_INTR_PTC_DETECT_EN) ? 1 : 0, |
2105 | (tmp_reg & USB_INTR_ERR_INT_EN) ? 1 : 0, | 2093 | (tmp_reg & USB_INTR_ERR_INT_EN) ? 1 : 0, |
2106 | (tmp_reg & USB_INTR_INT_EN) ? 1 : 0); | 2094 | (tmp_reg & USB_INTR_INT_EN) ? 1 : 0); |
2107 | size -= t; | ||
2108 | next += t; | ||
2109 | 2095 | ||
2110 | tmp_reg = fsl_readl(&dr_regs->frindex); | 2096 | tmp_reg = fsl_readl(&dr_regs->frindex); |
2111 | t = scnprintf(next, size, | 2097 | seq_printf(m, |
2112 | "USB Frame Index Reg: Frame Number is 0x%x\n\n", | 2098 | "USB Frame Index Reg: Frame Number is 0x%x\n\n", |
2113 | (tmp_reg & USB_FRINDEX_MASKS)); | 2099 | (tmp_reg & USB_FRINDEX_MASKS)); |
2114 | size -= t; | ||
2115 | next += t; | ||
2116 | 2100 | ||
2117 | tmp_reg = fsl_readl(&dr_regs->deviceaddr); | 2101 | tmp_reg = fsl_readl(&dr_regs->deviceaddr); |
2118 | t = scnprintf(next, size, | 2102 | seq_printf(m, |
2119 | "USB Device Address Reg: Device Addr is 0x%x\n\n", | 2103 | "USB Device Address Reg: Device Addr is 0x%x\n\n", |
2120 | (tmp_reg & USB_DEVICE_ADDRESS_MASK)); | 2104 | (tmp_reg & USB_DEVICE_ADDRESS_MASK)); |
2121 | size -= t; | ||
2122 | next += t; | ||
2123 | 2105 | ||
2124 | tmp_reg = fsl_readl(&dr_regs->endpointlistaddr); | 2106 | tmp_reg = fsl_readl(&dr_regs->endpointlistaddr); |
2125 | t = scnprintf(next, size, | 2107 | seq_printf(m, |
2126 | "USB Endpoint List Address Reg: " | 2108 | "USB Endpoint List Address Reg: " |
2127 | "Device Addr is 0x%x\n\n", | 2109 | "Device Addr is 0x%x\n\n", |
2128 | (tmp_reg & USB_EP_LIST_ADDRESS_MASK)); | 2110 | (tmp_reg & USB_EP_LIST_ADDRESS_MASK)); |
2129 | size -= t; | ||
2130 | next += t; | ||
2131 | 2111 | ||
2132 | tmp_reg = fsl_readl(&dr_regs->portsc1); | 2112 | tmp_reg = fsl_readl(&dr_regs->portsc1); |
2133 | t = scnprintf(next, size, | 2113 | seq_printf(m, |
2134 | "USB Port Status&Control Reg:\n" | 2114 | "USB Port Status&Control Reg:\n" |
2135 | "Port Transceiver Type : %s Port Speed: %s\n" | 2115 | "Port Transceiver Type : %s Port Speed: %s\n" |
2136 | "PHY Low Power Suspend: %s Port Reset: %s " | 2116 | "PHY Low Power Suspend: %s Port Reset: %s " |
@@ -2139,7 +2119,7 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count, | |||
2139 | "Port Enable/Disable Change: %s\n" | 2119 | "Port Enable/Disable Change: %s\n" |
2140 | "Port Enabled/Disabled: %s " | 2120 | "Port Enabled/Disabled: %s " |
2141 | "Current Connect Status: %s\n\n", ( { | 2121 | "Current Connect Status: %s\n\n", ( { |
2142 | char *s; | 2122 | const char *s; |
2143 | switch (tmp_reg & PORTSCX_PTS_FSLS) { | 2123 | switch (tmp_reg & PORTSCX_PTS_FSLS) { |
2144 | case PORTSCX_PTS_UTMI: | 2124 | case PORTSCX_PTS_UTMI: |
2145 | s = "UTMI"; break; | 2125 | s = "UTMI"; break; |
@@ -2165,13 +2145,11 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count, | |||
2165 | "Not correct", | 2145 | "Not correct", |
2166 | (tmp_reg & PORTSCX_CURRENT_CONNECT_STATUS) ? | 2146 | (tmp_reg & PORTSCX_CURRENT_CONNECT_STATUS) ? |
2167 | "Attached" : "Not-Att"); | 2147 | "Attached" : "Not-Att"); |
2168 | size -= t; | ||
2169 | next += t; | ||
2170 | 2148 | ||
2171 | tmp_reg = fsl_readl(&dr_regs->usbmode); | 2149 | tmp_reg = fsl_readl(&dr_regs->usbmode); |
2172 | t = scnprintf(next, size, | 2150 | seq_printf(m, |
2173 | "USB Mode Reg: Controller Mode is: %s\n\n", ( { | 2151 | "USB Mode Reg: Controller Mode is: %s\n\n", ( { |
2174 | char *s; | 2152 | const char *s; |
2175 | switch (tmp_reg & USB_MODE_CTRL_MODE_HOST) { | 2153 | switch (tmp_reg & USB_MODE_CTRL_MODE_HOST) { |
2176 | case USB_MODE_CTRL_MODE_IDLE: | 2154 | case USB_MODE_CTRL_MODE_IDLE: |
2177 | s = "Idle"; break; | 2155 | s = "Idle"; break; |
@@ -2184,103 +2162,87 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count, | |||
2184 | } | 2162 | } |
2185 | s; | 2163 | s; |
2186 | } )); | 2164 | } )); |
2187 | size -= t; | ||
2188 | next += t; | ||
2189 | 2165 | ||
2190 | tmp_reg = fsl_readl(&dr_regs->endptsetupstat); | 2166 | tmp_reg = fsl_readl(&dr_regs->endptsetupstat); |
2191 | t = scnprintf(next, size, | 2167 | seq_printf(m, |
2192 | "Endpoint Setup Status Reg: SETUP on ep 0x%x\n\n", | 2168 | "Endpoint Setup Status Reg: SETUP on ep 0x%x\n\n", |
2193 | (tmp_reg & EP_SETUP_STATUS_MASK)); | 2169 | (tmp_reg & EP_SETUP_STATUS_MASK)); |
2194 | size -= t; | ||
2195 | next += t; | ||
2196 | 2170 | ||
2197 | for (i = 0; i < udc->max_ep / 2; i++) { | 2171 | for (i = 0; i < udc->max_ep / 2; i++) { |
2198 | tmp_reg = fsl_readl(&dr_regs->endptctrl[i]); | 2172 | tmp_reg = fsl_readl(&dr_regs->endptctrl[i]); |
2199 | t = scnprintf(next, size, "EP Ctrl Reg [0x%x]: = [0x%x]\n", | 2173 | seq_printf(m, "EP Ctrl Reg [0x%x]: = [0x%x]\n", i, tmp_reg); |
2200 | i, tmp_reg); | ||
2201 | size -= t; | ||
2202 | next += t; | ||
2203 | } | 2174 | } |
2204 | tmp_reg = fsl_readl(&dr_regs->endpointprime); | 2175 | tmp_reg = fsl_readl(&dr_regs->endpointprime); |
2205 | t = scnprintf(next, size, "EP Prime Reg = [0x%x]\n\n", tmp_reg); | 2176 | seq_printf(m, "EP Prime Reg = [0x%x]\n\n", tmp_reg); |
2206 | size -= t; | ||
2207 | next += t; | ||
2208 | 2177 | ||
2209 | #ifndef CONFIG_ARCH_MXC | 2178 | #ifndef CONFIG_ARCH_MXC |
2210 | if (udc->pdata->have_sysif_regs) { | 2179 | if (udc->pdata->have_sysif_regs) { |
2211 | tmp_reg = usb_sys_regs->snoop1; | 2180 | tmp_reg = usb_sys_regs->snoop1; |
2212 | t = scnprintf(next, size, "Snoop1 Reg : = [0x%x]\n\n", tmp_reg); | 2181 | seq_printf(m, "Snoop1 Reg : = [0x%x]\n\n", tmp_reg); |
2213 | size -= t; | ||
2214 | next += t; | ||
2215 | 2182 | ||
2216 | tmp_reg = usb_sys_regs->control; | 2183 | tmp_reg = usb_sys_regs->control; |
2217 | t = scnprintf(next, size, "General Control Reg : = [0x%x]\n\n", | 2184 | seq_printf(m, "General Control Reg : = [0x%x]\n\n", tmp_reg); |
2218 | tmp_reg); | ||
2219 | size -= t; | ||
2220 | next += t; | ||
2221 | } | 2185 | } |
2222 | #endif | 2186 | #endif |
2223 | 2187 | ||
2224 | /* ------fsl_udc, fsl_ep, fsl_request structure information ----- */ | 2188 | /* ------fsl_udc, fsl_ep, fsl_request structure information ----- */ |
2225 | ep = &udc->eps[0]; | 2189 | ep = &udc->eps[0]; |
2226 | t = scnprintf(next, size, "For %s Maxpkt is 0x%x index is 0x%x\n", | 2190 | seq_printf(m, "For %s Maxpkt is 0x%x index is 0x%x\n", |
2227 | ep->ep.name, ep_maxpacket(ep), ep_index(ep)); | 2191 | ep->ep.name, ep_maxpacket(ep), ep_index(ep)); |
2228 | size -= t; | ||
2229 | next += t; | ||
2230 | 2192 | ||
2231 | if (list_empty(&ep->queue)) { | 2193 | if (list_empty(&ep->queue)) { |
2232 | t = scnprintf(next, size, "its req queue is empty\n\n"); | 2194 | seq_puts(m, "its req queue is empty\n\n"); |
2233 | size -= t; | ||
2234 | next += t; | ||
2235 | } else { | 2195 | } else { |
2236 | list_for_each_entry(req, &ep->queue, queue) { | 2196 | list_for_each_entry(req, &ep->queue, queue) { |
2237 | t = scnprintf(next, size, | 2197 | seq_printf(m, |
2238 | "req %p actual 0x%x length 0x%x buf %p\n", | 2198 | "req %p actual 0x%x length 0x%x buf %p\n", |
2239 | &req->req, req->req.actual, | 2199 | &req->req, req->req.actual, |
2240 | req->req.length, req->req.buf); | 2200 | req->req.length, req->req.buf); |
2241 | size -= t; | ||
2242 | next += t; | ||
2243 | } | 2201 | } |
2244 | } | 2202 | } |
2245 | /* other gadget->eplist ep */ | 2203 | /* other gadget->eplist ep */ |
2246 | list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) { | 2204 | list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) { |
2247 | if (ep->ep.desc) { | 2205 | if (ep->ep.desc) { |
2248 | t = scnprintf(next, size, | 2206 | seq_printf(m, |
2249 | "\nFor %s Maxpkt is 0x%x " | 2207 | "\nFor %s Maxpkt is 0x%x " |
2250 | "index is 0x%x\n", | 2208 | "index is 0x%x\n", |
2251 | ep->ep.name, ep_maxpacket(ep), | 2209 | ep->ep.name, ep_maxpacket(ep), |
2252 | ep_index(ep)); | 2210 | ep_index(ep)); |
2253 | size -= t; | ||
2254 | next += t; | ||
2255 | 2211 | ||
2256 | if (list_empty(&ep->queue)) { | 2212 | if (list_empty(&ep->queue)) { |
2257 | t = scnprintf(next, size, | 2213 | seq_puts(m, "its req queue is empty\n\n"); |
2258 | "its req queue is empty\n\n"); | ||
2259 | size -= t; | ||
2260 | next += t; | ||
2261 | } else { | 2214 | } else { |
2262 | list_for_each_entry(req, &ep->queue, queue) { | 2215 | list_for_each_entry(req, &ep->queue, queue) { |
2263 | t = scnprintf(next, size, | 2216 | seq_printf(m, |
2264 | "req %p actual 0x%x length " | 2217 | "req %p actual 0x%x length " |
2265 | "0x%x buf %p\n", | 2218 | "0x%x buf %p\n", |
2266 | &req->req, req->req.actual, | 2219 | &req->req, req->req.actual, |
2267 | req->req.length, req->req.buf); | 2220 | req->req.length, req->req.buf); |
2268 | size -= t; | 2221 | } /* end for each_entry of ep req */ |
2269 | next += t; | 2222 | } /* end for else */ |
2270 | } /* end for each_entry of ep req */ | 2223 | } /* end for if(ep->queue) */ |
2271 | } /* end for else */ | 2224 | } /* end (ep->desc) */ |
2272 | } /* end for if(ep->queue) */ | ||
2273 | } /* end (ep->desc) */ | ||
2274 | 2225 | ||
2275 | spin_unlock_irqrestore(&udc->lock, flags); | 2226 | spin_unlock_irqrestore(&udc->lock, flags); |
2227 | return 0; | ||
2228 | } | ||
2276 | 2229 | ||
2277 | *eof = 1; | 2230 | /* |
2278 | return count - size; | 2231 | * seq_file wrappers for procfile show routines. |
2232 | */ | ||
2233 | static int fsl_proc_open(struct inode *inode, struct file *file) | ||
2234 | { | ||
2235 | return single_open(file, fsl_proc_read, NULL); | ||
2279 | } | 2236 | } |
2280 | 2237 | ||
2281 | #define create_proc_file() create_proc_read_entry(proc_filename, \ | 2238 | static const struct file_operations fsl_proc_fops = { |
2282 | 0, NULL, fsl_proc_read, NULL) | 2239 | .open = fsl_proc_open, |
2240 | .read = seq_read, | ||
2241 | .llseek = seq_lseek, | ||
2242 | .release = seq_release, | ||
2243 | }; | ||
2283 | 2244 | ||
2245 | #define create_proc_file() proc_create(proc_filename, 0, NULL, &fsl_proc_fops) | ||
2284 | #define remove_proc_file() remove_proc_entry(proc_filename, NULL) | 2246 | #define remove_proc_file() remove_proc_entry(proc_filename, NULL) |
2285 | 2247 | ||
2286 | #else /* !CONFIG_USB_GADGET_DEBUG_FILES */ | 2248 | #else /* !CONFIG_USB_GADGET_DEBUG_FILES */ |