mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-18 00:23:03 -04:00
smsc95xx: align buffers to cache line size
Align buffers passed to the USB code to cache line size so they can be DMAed safely. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
This commit is contained in:
parent
2af16f85f1
commit
e3b31c8d75
@ -153,13 +153,15 @@ static int curr_eth_dev; /* index for name of next device detected */
|
|||||||
static int smsc95xx_write_reg(struct ueth_data *dev, u32 index, u32 data)
|
static int smsc95xx_write_reg(struct ueth_data *dev, u32 index, u32 data)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
ALLOC_CACHE_ALIGN_BUFFER(u32, tmpbuf, 1);
|
||||||
|
|
||||||
cpu_to_le32s(&data);
|
cpu_to_le32s(&data);
|
||||||
|
tmpbuf[0] = data;
|
||||||
|
|
||||||
len = usb_control_msg(dev->pusb_dev, usb_sndctrlpipe(dev->pusb_dev, 0),
|
len = usb_control_msg(dev->pusb_dev, usb_sndctrlpipe(dev->pusb_dev, 0),
|
||||||
USB_VENDOR_REQUEST_WRITE_REGISTER,
|
USB_VENDOR_REQUEST_WRITE_REGISTER,
|
||||||
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||||
00, index, &data, sizeof(data), USB_CTRL_SET_TIMEOUT);
|
00, index, tmpbuf, sizeof(data), USB_CTRL_SET_TIMEOUT);
|
||||||
if (len != sizeof(data)) {
|
if (len != sizeof(data)) {
|
||||||
debug("smsc95xx_write_reg failed: index=%d, data=%d, len=%d",
|
debug("smsc95xx_write_reg failed: index=%d, data=%d, len=%d",
|
||||||
index, data, len);
|
index, data, len);
|
||||||
@ -171,11 +173,13 @@ static int smsc95xx_write_reg(struct ueth_data *dev, u32 index, u32 data)
|
|||||||
static int smsc95xx_read_reg(struct ueth_data *dev, u32 index, u32 *data)
|
static int smsc95xx_read_reg(struct ueth_data *dev, u32 index, u32 *data)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
ALLOC_CACHE_ALIGN_BUFFER(u32, tmpbuf, 1);
|
||||||
|
|
||||||
len = usb_control_msg(dev->pusb_dev, usb_rcvctrlpipe(dev->pusb_dev, 0),
|
len = usb_control_msg(dev->pusb_dev, usb_rcvctrlpipe(dev->pusb_dev, 0),
|
||||||
USB_VENDOR_REQUEST_READ_REGISTER,
|
USB_VENDOR_REQUEST_READ_REGISTER,
|
||||||
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||||
00, index, data, sizeof(data), USB_CTRL_GET_TIMEOUT);
|
00, index, tmpbuf, sizeof(data), USB_CTRL_GET_TIMEOUT);
|
||||||
|
*data = tmpbuf[0];
|
||||||
if (len != sizeof(data)) {
|
if (len != sizeof(data)) {
|
||||||
debug("smsc95xx_read_reg failed: index=%d, len=%d",
|
debug("smsc95xx_read_reg failed: index=%d, len=%d",
|
||||||
index, len);
|
index, len);
|
||||||
@ -664,7 +668,8 @@ static int smsc95xx_send(struct eth_device *eth, void* packet, int length)
|
|||||||
int actual_len;
|
int actual_len;
|
||||||
u32 tx_cmd_a;
|
u32 tx_cmd_a;
|
||||||
u32 tx_cmd_b;
|
u32 tx_cmd_b;
|
||||||
unsigned char msg[PKTSIZE + sizeof(tx_cmd_a) + sizeof(tx_cmd_b)];
|
ALLOC_CACHE_ALIGN_BUFFER(unsigned char, msg,
|
||||||
|
PKTSIZE + sizeof(tx_cmd_a) + sizeof(tx_cmd_b));
|
||||||
|
|
||||||
debug("** %s(), len %d, buf %#x\n", __func__, length, (int)msg);
|
debug("** %s(), len %d, buf %#x\n", __func__, length, (int)msg);
|
||||||
if (length > PKTSIZE)
|
if (length > PKTSIZE)
|
||||||
@ -695,7 +700,7 @@ static int smsc95xx_send(struct eth_device *eth, void* packet, int length)
|
|||||||
static int smsc95xx_recv(struct eth_device *eth)
|
static int smsc95xx_recv(struct eth_device *eth)
|
||||||
{
|
{
|
||||||
struct ueth_data *dev = (struct ueth_data *)eth->priv;
|
struct ueth_data *dev = (struct ueth_data *)eth->priv;
|
||||||
static unsigned char recv_buf[AX_RX_URB_SIZE];
|
DEFINE_CACHE_ALIGN_BUFFER(unsigned char, recv_buf, AX_RX_URB_SIZE);
|
||||||
unsigned char *buf_ptr;
|
unsigned char *buf_ptr;
|
||||||
int err;
|
int err;
|
||||||
int actual_len;
|
int actual_len;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user