Source
97
97
98
98
/* initialize descriptors */
99
99
100
100
priv->rx_index = 0;
101
101
102
102
txdes[0].txdes1 = FTMAC100_TXDES1_EDOTR;
103
103
rxdes[PKTBUFSRX - 1].rxdes1 = FTMAC100_RXDES1_EDORR;
104
104
105
105
for (i = 0; i < PKTBUFSRX; i++) {
106
106
/* RXBUF_BADR */
107
-
rxdes[i].rxdes2 = (unsigned int)net_rx_packets[i];
107
+
rxdes[i].rxdes2 = (unsigned int)(unsigned long)net_rx_packets[i];
108
108
rxdes[i].rxdes1 |= FTMAC100_RXDES1_RXBUF_SIZE (PKTSIZE_ALIGN);
109
109
rxdes[i].rxdes0 = FTMAC100_RXDES0_RXDMA_OWN;
110
110
}
111
111
112
112
/* transmit ring */
113
113
114
-
writel ((unsigned int)txdes, &ftmac100->txr_badr);
114
+
writel ((unsigned long)txdes, &ftmac100->txr_badr);
115
115
116
116
/* receive ring */
117
117
118
-
writel ((unsigned int)rxdes, &ftmac100->rxr_badr);
118
+
writel ((unsigned long)rxdes, &ftmac100->rxr_badr);
119
119
120
120
/* poll receive descriptor automatically */
121
121
122
122
writel (FTMAC100_APTC_RXPOLL_CNT (1), &ftmac100->aptc);
123
123
124
124
/* enable transmitter, receiver */
125
125
126
126
maccr = FTMAC100_MACCR_XMT_EN |
127
127
FTMAC100_MACCR_RCV_EN |
128
128
FTMAC100_MACCR_XDMA_EN |
185
185
{
186
186
struct ftmac100 *ftmac100 = (struct ftmac100 *)priv->iobase;
187
187
struct ftmac100_txdes *curr_des = priv->txdes;
188
188
ulong start;
189
189
190
190
if (curr_des->txdes0 & FTMAC100_TXDES0_TXDMA_OWN) {
191
191
debug ("%s(): no TX descriptor available\n", __func__);
192
192
return -1;
193
193
}
194
194
195
-
debug ("%s(%x, %x)\n", __func__, (int)packet, length);
195
+
debug ("%s(%lx, %x)\n", __func__, (unsigned long)packet, length);
196
196
197
197
length = (length < ETH_ZLEN) ? ETH_ZLEN : length;
198
198
199
199
/* initiate a transmit sequence */
200
200
201
-
flush_dcache_range((u32)packet,(u32)packet+length);
202
-
curr_des->txdes2 = (unsigned int)packet; /* TXBUF_BADR */
201
+
flush_dcache_range((unsigned long)packet,(unsigned long)packet+length);
202
+
curr_des->txdes2 = (unsigned int)(unsigned long)packet; /* TXBUF_BADR */
203
203
204
204
curr_des->txdes1 &= FTMAC100_TXDES1_EDOTR;
205
205
curr_des->txdes1 |= FTMAC100_TXDES1_FTS |
206
206
FTMAC100_TXDES1_LTS |
207
207
FTMAC100_TXDES1_TXBUF_SIZE (length);
208
208
209
209
curr_des->txdes0 = FTMAC100_TXDES0_TXDMA_OWN;
210
210
211
211
/* start transmit */
212
212
336
336
}
337
337
338
338
static int ftmac100_recv(struct udevice *dev, int flags, uchar **packetp)
339
339
{
340
340
struct ftmac100_data *priv = dev_get_priv(dev);
341
341
struct ftmac100_rxdes *curr_des;
342
342
curr_des = &priv->rxdes[priv->rx_index];
343
343
int len;
344
344
len = __ftmac100_recv(priv);
345
345
if (len)
346
-
*packetp = (void *)curr_des->rxdes2;
346
+
*packetp = (uchar *)(unsigned long)curr_des->rxdes2;
347
347
348
348
return len ? len : -EAGAIN;
349
349
}
350
350
351
351
static int ftmac100_free_pkt(struct udevice *dev, uchar *packet, int length)
352
352
{
353
353
struct ftmac100_data *priv = dev_get_priv(dev);
354
354
_ftmac100_free_pkt(priv);
355
355
return 0;
356
356
}