Commit 20f6b829 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman

staging: octeon-usb: use generic prefetch

Use generic prefetch.
Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a4570140
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/prefetch.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/usb.h> #include <linux/usb.h>
...@@ -245,9 +246,6 @@ enum cvmx_usb_pipe_flags { ...@@ -245,9 +246,6 @@ enum cvmx_usb_pipe_flags {
__CVMX_USB_PIPE_FLAGS_NEED_PING = 1 << 18, __CVMX_USB_PIPE_FLAGS_NEED_PING = 1 << 18,
}; };
/* Normal prefetch that use the pref instruction. */
#define CVMX_PREFETCH(address, offset) asm volatile ("pref %[type], %[off](%[rbase])" : : [rbase] "d" (address), [off] "I" (offset), [type] "n" (0))
/* Maximum number of times to retry failed transactions */ /* Maximum number of times to retry failed transactions */
#define MAX_RETRIES 3 #define MAX_RETRIES 3
...@@ -2008,7 +2006,7 @@ static struct cvmx_usb_pipe *__cvmx_usb_find_ready_pipe( ...@@ -2008,7 +2006,7 @@ static struct cvmx_usb_pipe *__cvmx_usb_find_ready_pipe(
((((int)current_frame - (int)pipe->split_sc_frame) ((((int)current_frame - (int)pipe->split_sc_frame)
& 0x7f) < 0x40)) && & 0x7f) < 0x40)) &&
(!usb->active_split || (usb->active_split == t))) { (!usb->active_split || (usb->active_split == t))) {
CVMX_PREFETCH(t, 0); prefetch(t);
return pipe; return pipe;
} }
} }
...@@ -2658,13 +2656,13 @@ static int __cvmx_usb_poll_channel(struct cvmx_usb_state *usb, int channel) ...@@ -2658,13 +2656,13 @@ static int __cvmx_usb_poll_channel(struct cvmx_usb_state *usb, int channel)
/* Make sure this channel is tied to a valid pipe */ /* Make sure this channel is tied to a valid pipe */
pipe = usb->pipe_for_channel[channel]; pipe = usb->pipe_for_channel[channel];
CVMX_PREFETCH(pipe, 0); prefetch(pipe);
if (!pipe) if (!pipe)
return 0; return 0;
transaction = list_first_entry(&pipe->transactions, transaction = list_first_entry(&pipe->transactions,
typeof(*transaction), typeof(*transaction),
node); node);
CVMX_PREFETCH(transaction, 0); prefetch(transaction);
/* /*
* Disconnect this pipe from the HW channel. Later the schedule * Disconnect this pipe from the HW channel. Later the schedule
...@@ -3121,11 +3119,7 @@ static int cvmx_usb_poll(struct cvmx_usb_state *usb) ...@@ -3121,11 +3119,7 @@ static int cvmx_usb_poll(struct cvmx_usb_state *usb)
union cvmx_usbcx_hfnum usbc_hfnum; union cvmx_usbcx_hfnum usbc_hfnum;
union cvmx_usbcx_gintsts usbc_gintsts; union cvmx_usbcx_gintsts usbc_gintsts;
CVMX_PREFETCH(usb, 0); prefetch_range(usb, sizeof(*usb));
CVMX_PREFETCH(usb, 1*128);
CVMX_PREFETCH(usb, 2*128);
CVMX_PREFETCH(usb, 3*128);
CVMX_PREFETCH(usb, 4*128);
/* Update the frame counter */ /* Update the frame counter */
usbc_hfnum.u32 = __cvmx_usb_read_csr32(usb, CVMX_USBCX_HFNUM(usb->index)); usbc_hfnum.u32 = __cvmx_usb_read_csr32(usb, CVMX_USBCX_HFNUM(usb->index));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment