| 367 | } |
| 368 | |
| 369 | int cme_m7_eth_init(void) |
| 370 | { |
| 371 | // /* PHY RESET: PA4 */ |
| 372 | // { |
| 373 | // GPIO_ResetBits(GPIOA, GPIO_Pin_4); |
| 374 | // rt_thread_delay(2); |
| 375 | // GPIO_SetBits(GPIOA, GPIO_Pin_4); |
| 376 | // rt_thread_delay(2); |
| 377 | // } |
| 378 | |
| 379 | // GPIO_Configuration(); |
| 380 | NVIC_Configuration(); |
| 381 | |
| 382 | // cme_eth_device.ETH_Speed = ETH_Speed_100M; |
| 383 | // cme_eth_device.ETH_Mode = ETH_Mode_FullDuplex; |
| 384 | |
| 385 | /* OUI 00-80-E1 STMICROELECTRONICS. */ |
| 386 | cme_eth_device.dev_addr[0] = 0x00; |
| 387 | cme_eth_device.dev_addr[1] = 0x80; |
| 388 | cme_eth_device.dev_addr[2] = 0xE1; |
| 389 | /* generate MAC addr from 96bit unique ID (only for test). */ |
| 390 | // cme_eth_device.dev_addr[3] = *(rt_uint8_t*)(0x1FFF7A10+4); |
| 391 | // cme_eth_device.dev_addr[4] = *(rt_uint8_t*)(0x1FFF7A10+2); |
| 392 | // cme_eth_device.dev_addr[5] = *(rt_uint8_t*)(0x1FFF7A10+0); |
| 393 | cme_eth_device.dev_addr[3] = 12; |
| 394 | cme_eth_device.dev_addr[4] = 34; |
| 395 | cme_eth_device.dev_addr[5] = 56; |
| 396 | |
| 397 | cme_eth_device.parent.parent.init = rt_cme_eth_init; |
| 398 | cme_eth_device.parent.parent.open = rt_cme_eth_open; |
| 399 | cme_eth_device.parent.parent.close = rt_cme_eth_close; |
| 400 | cme_eth_device.parent.parent.read = rt_cme_eth_read; |
| 401 | cme_eth_device.parent.parent.write = rt_cme_eth_write; |
| 402 | cme_eth_device.parent.parent.control = rt_cme_eth_control; |
| 403 | cme_eth_device.parent.parent.user_data = RT_NULL; |
| 404 | |
| 405 | cme_eth_device.parent.eth_rx = rt_cme_eth_rx; |
| 406 | cme_eth_device.parent.eth_tx = rt_cme_eth_tx; |
| 407 | |
| 408 | /* init EMAC lock */ |
| 409 | rt_mutex_init(&cme_eth_device.lock, "emac0", RT_IPC_FLAG_PRIO); |
| 410 | |
| 411 | /* init tx buffer free semaphore */ |
| 412 | rt_sem_init(&cme_eth_device.tx_buf_free, |
| 413 | "tx_buf", |
| 414 | ETH_TXBUFNB, |
| 415 | RT_IPC_FLAG_FIFO); |
| 416 | |
| 417 | /* register eth device */ |
| 418 | eth_device_init(&(cme_eth_device.parent), "e0"); |
| 419 | |
| 420 | return RT_EOK; |
| 421 | } |
| 422 | |
| 423 | void ETH_IRQHandler(void) |
| 424 | { |
no test coverage detected