151b572a8SNobuhiro Iwamatsu /* 251b572a8SNobuhiro Iwamatsu * Copyright (C) 2008 Nobuhiro Iwamatsu 351b572a8SNobuhiro Iwamatsu * Copyright (C) 2008 Renesas Solutions Corp. 451b572a8SNobuhiro Iwamatsu * 551b572a8SNobuhiro Iwamatsu * u-boot/board/rsk7203/rsk7203.c 651b572a8SNobuhiro Iwamatsu * 7*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 851b572a8SNobuhiro Iwamatsu */ 951b572a8SNobuhiro Iwamatsu 1051b572a8SNobuhiro Iwamatsu #include <common.h> 11a794f59aSJean-Christophe PLAGNIOL-VILLARD #include <net.h> 12736fead8SBen Warren #include <netdev.h> 1351b572a8SNobuhiro Iwamatsu #include <asm/io.h> 1451b572a8SNobuhiro Iwamatsu #include <asm/processor.h> 1551b572a8SNobuhiro Iwamatsu checkboard(void)1651b572a8SNobuhiro Iwamatsuint checkboard(void) 1751b572a8SNobuhiro Iwamatsu { 1851b572a8SNobuhiro Iwamatsu puts("BOARD: Renesas Technology RSK7203\n"); 1951b572a8SNobuhiro Iwamatsu return 0; 2051b572a8SNobuhiro Iwamatsu } 2151b572a8SNobuhiro Iwamatsu board_init(void)2251b572a8SNobuhiro Iwamatsuint board_init(void) 2351b572a8SNobuhiro Iwamatsu { 2451b572a8SNobuhiro Iwamatsu return 0; 2551b572a8SNobuhiro Iwamatsu } 2651b572a8SNobuhiro Iwamatsu led_set_state(unsigned short value)2751b572a8SNobuhiro Iwamatsuvoid led_set_state(unsigned short value) 2851b572a8SNobuhiro Iwamatsu { 2951b572a8SNobuhiro Iwamatsu } 3051b572a8SNobuhiro Iwamatsu 3151b572a8SNobuhiro Iwamatsu /* 3251b572a8SNobuhiro Iwamatsu * The RSK board has the SMSC9118 wired up 'incorrectly'. 3351b572a8SNobuhiro Iwamatsu * Byte-swapping is necessary, and so poor performance is inevitable. 3451b572a8SNobuhiro Iwamatsu * This problem cannot evade by the swap function of CHIP, this can 3551b572a8SNobuhiro Iwamatsu * evade by software Byte-swapping. 3651b572a8SNobuhiro Iwamatsu * And this has problem by FIFO access only. pkt_data_pull/pkt_data_push 3751b572a8SNobuhiro Iwamatsu * functions necessary to solve this problem. 3851b572a8SNobuhiro Iwamatsu */ pkt_data_pull(struct eth_device * dev,u32 addr)39736fead8SBen Warrenu32 pkt_data_pull(struct eth_device *dev, u32 addr) 4051b572a8SNobuhiro Iwamatsu { 41736fead8SBen Warren volatile u16 *addr_16 = (u16 *)(dev->iobase + addr); 4251b572a8SNobuhiro Iwamatsu return (u32)((swab16(*addr_16) << 16) & 0xFFFF0000)\ 4351b572a8SNobuhiro Iwamatsu | swab16(*(addr_16 + 1)); 4451b572a8SNobuhiro Iwamatsu } 4551b572a8SNobuhiro Iwamatsu pkt_data_push(struct eth_device * dev,u32 addr,u32 val)46736fead8SBen Warrenvoid pkt_data_push(struct eth_device *dev, u32 addr, u32 val) 4751b572a8SNobuhiro Iwamatsu { 48736fead8SBen Warren addr += dev->iobase; 4951b572a8SNobuhiro Iwamatsu *(volatile u16 *)(addr + 2) = swab16((u16)val); 5051b572a8SNobuhiro Iwamatsu *(volatile u16 *)(addr) = swab16((u16)(val >> 16)); 5151b572a8SNobuhiro Iwamatsu } 52736fead8SBen Warren board_eth_init(bd_t * bis)53736fead8SBen Warrenint board_eth_init(bd_t *bis) 54736fead8SBen Warren { 55736fead8SBen Warren int rc = 0; 56736fead8SBen Warren #ifdef CONFIG_SMC911X 57736fead8SBen Warren rc = smc911x_initialize(0, CONFIG_SMC911X_BASE); 58736fead8SBen Warren #endif 59736fead8SBen Warren return rc; 60736fead8SBen Warren } 61