blob: 8800371b00427b5bf0f4cc08c97adcc3bdbcb0aa [file] [log] [blame]
Nobuhiro Iwamatsu6f7d4362008-08-31 23:02:04 +09001/*
2 * Copyright (C) 2008 Nobuhiro Iwamatsu
3 * Copyright (C) 2008 Renesas Solutions Corp.
4 *
5 * u-boot/board/rsk7203/rsk7203.c
6 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02007 * SPDX-License-Identifier: GPL-2.0+
Nobuhiro Iwamatsu6f7d4362008-08-31 23:02:04 +09008 */
9
10#include <common.h>
Jean-Christophe PLAGNIOL-VILLARDd79a3142009-08-23 14:14:52 +020011#include <net.h>
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070012#include <netdev.h>
Nobuhiro Iwamatsu6f7d4362008-08-31 23:02:04 +090013#include <asm/io.h>
14#include <asm/processor.h>
15
John Rigby0d21ed02010-12-20 18:27:51 -070016DECLARE_GLOBAL_DATA_PTR;
17
Nobuhiro Iwamatsu6f7d4362008-08-31 23:02:04 +090018int checkboard(void)
19{
20 puts("BOARD: Renesas Technology RSK7203\n");
21 return 0;
22}
23
24int board_init(void)
25{
26 return 0;
27}
28
29int dram_init(void)
30{
Jean-Christophe PLAGNIOL-VILLARD03836942008-10-16 15:01:15 +020031 gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
32 gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
33 printf("DRAM: %dMB\n", CONFIG_SYS_SDRAM_SIZE / (1024 * 1024));
Nobuhiro Iwamatsu6f7d4362008-08-31 23:02:04 +090034 return 0;
35}
36
37void led_set_state(unsigned short value)
38{
39}
Nobuhiro Iwamatsue9dd88e2008-08-28 13:40:52 +090040
41/*
42 * The RSK board has the SMSC9118 wired up 'incorrectly'.
43 * Byte-swapping is necessary, and so poor performance is inevitable.
44 * This problem cannot evade by the swap function of CHIP, this can
45 * evade by software Byte-swapping.
46 * And this has problem by FIFO access only. pkt_data_pull/pkt_data_push
47 * functions necessary to solve this problem.
48 */
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070049u32 pkt_data_pull(struct eth_device *dev, u32 addr)
Nobuhiro Iwamatsue9dd88e2008-08-28 13:40:52 +090050{
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070051 volatile u16 *addr_16 = (u16 *)(dev->iobase + addr);
Nobuhiro Iwamatsue9dd88e2008-08-28 13:40:52 +090052 return (u32)((swab16(*addr_16) << 16) & 0xFFFF0000)\
53 | swab16(*(addr_16 + 1));
54}
55
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070056void pkt_data_push(struct eth_device *dev, u32 addr, u32 val)
Nobuhiro Iwamatsue9dd88e2008-08-28 13:40:52 +090057{
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070058 addr += dev->iobase;
Nobuhiro Iwamatsue9dd88e2008-08-28 13:40:52 +090059 *(volatile u16 *)(addr + 2) = swab16((u16)val);
60 *(volatile u16 *)(addr) = swab16((u16)(val >> 16));
61}
Ben Warrenfbfdd3a2009-07-20 22:01:11 -070062
63int board_eth_init(bd_t *bis)
64{
65 int rc = 0;
66#ifdef CONFIG_SMC911X
67 rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
68#endif
69 return rc;
70}