1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 299744b7eSPhil Edworthy /* 399744b7eSPhil Edworthy * Copyright (C) 2012 Renesas Electronics Europe Ltd. 499744b7eSPhil Edworthy * Copyright (C) 2012 Phil Edworthy 599744b7eSPhil Edworthy * Copyright (C) 2008 Renesas Solutions Corp. 699744b7eSPhil Edworthy * Copyright (C) 2008 Nobuhiro Iwamatsu 799744b7eSPhil Edworthy * 899744b7eSPhil Edworthy * Based on u-boot/board/rsk7264/rsk7264.c 999744b7eSPhil Edworthy */ 1099744b7eSPhil Edworthy 1199744b7eSPhil Edworthy #include <common.h> 1299744b7eSPhil Edworthy #include <net.h> 1399744b7eSPhil Edworthy #include <netdev.h> 1499744b7eSPhil Edworthy #include <asm/io.h> 1599744b7eSPhil Edworthy #include <asm/processor.h> 1699744b7eSPhil Edworthy checkboard(void)1799744b7eSPhil Edworthyint checkboard(void) 1899744b7eSPhil Edworthy { 1999744b7eSPhil Edworthy puts("BOARD: Renesas RSK7269\n"); 2099744b7eSPhil Edworthy return 0; 2199744b7eSPhil Edworthy } 2299744b7eSPhil Edworthy board_init(void)2399744b7eSPhil Edworthyint board_init(void) 2499744b7eSPhil Edworthy { 2599744b7eSPhil Edworthy return 0; 2699744b7eSPhil Edworthy } 2799744b7eSPhil Edworthy led_set_state(unsigned short value)2899744b7eSPhil Edworthyvoid led_set_state(unsigned short value) 2999744b7eSPhil Edworthy { 3099744b7eSPhil Edworthy } 3199744b7eSPhil Edworthy 3299744b7eSPhil Edworthy /* 3399744b7eSPhil Edworthy * The RSK board has the SMSC89218 wired up 'incorrectly'. 3499744b7eSPhil Edworthy * Byte-swapping is necessary, and so poor performance is inevitable. 3599744b7eSPhil Edworthy * This problem cannot evade by the swap function of CHIP, this can 3699744b7eSPhil Edworthy * evade by software Byte-swapping. 3799744b7eSPhil Edworthy * And this has problem by FIFO access only. pkt_data_pull/pkt_data_push 3899744b7eSPhil Edworthy * functions necessary to solve this problem. 3999744b7eSPhil Edworthy */ pkt_data_pull(struct eth_device * dev,u32 addr)4099744b7eSPhil Edworthyu32 pkt_data_pull(struct eth_device *dev, u32 addr) 4199744b7eSPhil Edworthy { 4299744b7eSPhil Edworthy volatile u16 *addr_16 = (u16 *)(dev->iobase + addr); 4399744b7eSPhil Edworthy return (u32)((swab16(*addr_16) << 16) & 0xFFFF0000)\ 4499744b7eSPhil Edworthy | swab16(*(addr_16 + 1)); 4599744b7eSPhil Edworthy } 4699744b7eSPhil Edworthy pkt_data_push(struct eth_device * dev,u32 addr,u32 val)4799744b7eSPhil Edworthyvoid pkt_data_push(struct eth_device *dev, u32 addr, u32 val) 4899744b7eSPhil Edworthy { 4999744b7eSPhil Edworthy addr += dev->iobase; 5099744b7eSPhil Edworthy *(volatile u16 *)(addr + 2) = swab16((u16)val); 5199744b7eSPhil Edworthy *(volatile u16 *)(addr) = swab16((u16)(val >> 16)); 5299744b7eSPhil Edworthy } 5399744b7eSPhil Edworthy board_eth_init(bd_t * bis)5499744b7eSPhil Edworthyint board_eth_init(bd_t *bis) 5599744b7eSPhil Edworthy { 5699744b7eSPhil Edworthy int rc = 0; 5799744b7eSPhil Edworthy #ifdef CONFIG_SMC911X 5899744b7eSPhil Edworthy rc = smc911x_initialize(0, CONFIG_SMC911X_BASE); 5999744b7eSPhil Edworthy #endif 6099744b7eSPhil Edworthy return rc; 6199744b7eSPhil Edworthy } 62