17fbeb642SPhil Edworthy /* 27fbeb642SPhil Edworthy * Copyright (C) 2011 Renesas Electronics Europe Ltd. 37fbeb642SPhil Edworthy * Copyright (C) 2008 Renesas Solutions Corp. 47fbeb642SPhil Edworthy * Copyright (C) 2008 Nobuhiro Iwamatsu 57fbeb642SPhil Edworthy * 67fbeb642SPhil Edworthy * Based on u-boot/board/rsk7264/rsk7203.c 77fbeb642SPhil Edworthy * 8*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 97fbeb642SPhil Edworthy */ 107fbeb642SPhil Edworthy 117fbeb642SPhil Edworthy #include <common.h> 127fbeb642SPhil Edworthy #include <net.h> 137fbeb642SPhil Edworthy #include <netdev.h> 147fbeb642SPhil Edworthy #include <asm/io.h> 157fbeb642SPhil Edworthy #include <asm/processor.h> 167fbeb642SPhil Edworthy checkboard(void)177fbeb642SPhil Edworthyint checkboard(void) 187fbeb642SPhil Edworthy { 197fbeb642SPhil Edworthy puts("BOARD: Renesas Technology RSK7264\n"); 207fbeb642SPhil Edworthy return 0; 217fbeb642SPhil Edworthy } 227fbeb642SPhil Edworthy board_init(void)237fbeb642SPhil Edworthyint board_init(void) 247fbeb642SPhil Edworthy { 257fbeb642SPhil Edworthy return 0; 267fbeb642SPhil Edworthy } 277fbeb642SPhil Edworthy led_set_state(unsigned short value)287fbeb642SPhil Edworthyvoid led_set_state(unsigned short value) 297fbeb642SPhil Edworthy { 307fbeb642SPhil Edworthy } 317fbeb642SPhil Edworthy 327fbeb642SPhil Edworthy /* 337fbeb642SPhil Edworthy * The RSK board has the SMSC89218 wired up 'incorrectly'. 347fbeb642SPhil Edworthy * Byte-swapping is necessary, and so poor performance is inevitable. 357fbeb642SPhil Edworthy * This problem cannot evade by the swap function of CHIP, this can 367fbeb642SPhil Edworthy * evade by software Byte-swapping. 377fbeb642SPhil Edworthy * And this has problem by FIFO access only. pkt_data_pull/pkt_data_push 387fbeb642SPhil Edworthy * functions necessary to solve this problem. 397fbeb642SPhil Edworthy */ pkt_data_pull(struct eth_device * dev,u32 addr)407fbeb642SPhil Edworthyu32 pkt_data_pull(struct eth_device *dev, u32 addr) 417fbeb642SPhil Edworthy { 427fbeb642SPhil Edworthy volatile u16 *addr_16 = (u16 *)(dev->iobase + addr); 437fbeb642SPhil Edworthy return (u32)((swab16(*addr_16) << 16) & 0xFFFF0000)\ 447fbeb642SPhil Edworthy | swab16(*(addr_16 + 1)); 457fbeb642SPhil Edworthy } 467fbeb642SPhil Edworthy pkt_data_push(struct eth_device * dev,u32 addr,u32 val)477fbeb642SPhil Edworthyvoid pkt_data_push(struct eth_device *dev, u32 addr, u32 val) 487fbeb642SPhil Edworthy { 497fbeb642SPhil Edworthy addr += dev->iobase; 507fbeb642SPhil Edworthy *(volatile u16 *)(addr + 2) = swab16((u16)val); 517fbeb642SPhil Edworthy *(volatile u16 *)(addr) = swab16((u16)(val >> 16)); 527fbeb642SPhil Edworthy } 537fbeb642SPhil Edworthy board_eth_init(bd_t * bis)547fbeb642SPhil Edworthyint board_eth_init(bd_t *bis) 557fbeb642SPhil Edworthy { 567fbeb642SPhil Edworthy int rc = 0; 577fbeb642SPhil Edworthy #ifdef CONFIG_SMC911X 587fbeb642SPhil Edworthy rc = smc911x_initialize(0, CONFIG_SMC911X_BASE); 597fbeb642SPhil Edworthy #endif 607fbeb642SPhil Edworthy return rc; 617fbeb642SPhil Edworthy } 62