20 #define GELIC_BUS_ID 1
21 #define GELIC_DEVICE_ID 0
22 #define GELIC_DEBUG_PORT 18194
23 #define GELIC_MAX_MESSAGE_SIZE 1000
25 #define GELIC_LV1_GET_MAC_ADDRESS 1
26 #define GELIC_LV1_GET_VLAN_ID 4
27 #define GELIC_LV1_VLAN_TX_ETHERNET_0 2
29 #define GELIC_DESCR_DMA_STAT_MASK 0xf0000000
30 #define GELIC_DESCR_DMA_CARDOWNED 0xa0000000
32 #define GELIC_DESCR_TX_DMA_IKE 0x00080000
33 #define GELIC_DESCR_TX_DMA_NO_CHKSUM 0x00000000
34 #define GELIC_DESCR_TX_DMA_FRAME_TAIL 0x00040000
36 #define GELIC_DESCR_DMA_CMD_NO_CHKSUM (GELIC_DESCR_DMA_CARDOWNED | \
37 GELIC_DESCR_TX_DMA_IKE | \
38 GELIC_DESCR_TX_DMA_NO_CHKSUM)
100 static int header_size;
102 static void map_dma_mem(
int bus_id,
int dev_id,
void *
start,
size_t len,
106 u64 real_addr = ((
u64)start) & 0x0fffffffffffffff
UL;
107 u64 real_end = real_addr + len;
108 u64 map_start = real_addr & ~0xfff;
109 u64 map_end = (real_end + 0xfff) & ~0xfff;
114 result = lv1_allocate_device_dma_region(bus_id, dev_id,
115 map_end - map_start, 12, 0,
120 result = lv1_map_device_dma_region(bus_id, dev_id, map_start,
121 bus_addr, map_end - map_start,
126 *real_bus_addr = bus_addr + real_addr - map_start;
129 static int unmap_dma_mem(
int bus_id,
int dev_id,
u64 bus_addr,
size_t len)
134 real_bus_addr = bus_addr & ~0xfff;
135 len += bus_addr - real_bus_addr;
136 len = (len + 0xfff) & ~0xfff;
138 result = lv1_unmap_device_dma_region(bus_id, dev_id, real_bus_addr,
143 return lv1_free_device_dma_region(bus_id, dev_id, real_bus_addr);
146 static void gelic_debug_init(
void)
179 header_size =
sizeof(
struct ethhdr);
186 h_eth->
type = 0x8100;
188 header_size +=
sizeof(
struct vlantag);
189 h_vlan = (
struct vlantag *)(h_eth + 1);
192 h_ip = (
struct iphdr *)(h_vlan + 1);
194 h_eth->
type = 0x0800;
195 h_ip = (
struct iphdr *)(h_eth + 1);
198 header_size +=
sizeof(
struct iphdr);
202 h_ip->
src = 0x00000000;
203 h_ip->
dest = 0xffffffff;
205 header_size +=
sizeof(
struct udphdr);
206 h_udp = (
struct udphdr *)(h_ip + 1);
210 pmsgc = pmsg = (
char *)(h_udp + 1);
213 static void gelic_debug_shutdown(
void)
217 bus_addr,
sizeof(
dbg));
221 static void gelic_sendbuf(
int msgsize)
227 dbg.descr.buf_size = header_size + msgsize;
230 h_udp->
len = msgsize +
sizeof(
struct udphdr);
235 for (i = 0; i < 5; i++)
237 h_ip->
checksum = ~(sum + (sum >> 16));
241 dbg.descr.result_size = 0;
242 dbg.descr.data_status = 0;
253 static void ps3gelic_udbg_putc(
char ch)
257 gelic_sendbuf(pmsgc-pmsg);
271 gelic_debug_shutdown();