summaryrefslogtreecommitdiffstats
path: root/board/spear/common/spr_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/spear/common/spr_misc.c')
-rw-r--r--board/spear/common/spr_misc.c102
1 files changed, 34 insertions, 68 deletions
diff --git a/board/spear/common/spr_misc.c b/board/spear/common/spr_misc.c
index 0812c20b8c..99a6595966 100644
--- a/board/spear/common/spr_misc.c
+++ b/board/spear/common/spr_misc.c
@@ -25,10 +25,10 @@
#include <command.h>
#include <i2c.h>
#include <net.h>
+#include <linux/mtd/st_smi.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
#include <asm/arch/spr_emi.h>
-#include <asm/arch/spr_xloader_table.h>
#include <asm/arch/spr_defs.h>
#define CPU 0
@@ -36,31 +36,16 @@
#define SRAM_REL 0xD2801000
DECLARE_GLOBAL_DATA_PTR;
-static struct chip_data chip_data;
+
+#if defined(CONFIG_CMD_NET)
+static int i2c_read_mac(uchar *buffer);
+#endif
int dram_init(void)
{
- struct xloader_table *xloader_tb =
- (struct xloader_table *)XLOADER_TABLE_ADDRESS;
- struct xloader_table_1_1 *table_1_1;
- struct xloader_table_1_2 *table_1_2;
- struct chip_data *chip = &chip_data;
-
+ /* Store complete RAM size and return */
gd->ram_size = get_ram_size(PHYS_SDRAM_1, PHYS_SDRAM_1_MAXSIZE);
- if (XLOADER_TABLE_VERSION_1_1 == xloader_tb->table_version) {
- table_1_1 = &xloader_tb->table.table_1_1;
- chip->dramfreq = table_1_1->ddrfreq;
- chip->dramtype = table_1_1->ddrtype;
-
- } else if (XLOADER_TABLE_VERSION_1_2 == xloader_tb->table_version) {
- table_1_2 = &xloader_tb->table.table_1_2;
- chip->dramfreq = table_1_2->ddrfreq;
- chip->dramtype = table_1_2->ddrtype;
- } else {
- chip->dramfreq = -1;
- }
-
return 0;
}
@@ -70,6 +55,13 @@ void dram_init_banksize(void)
gd->bd->bi_dram[0].size = gd->ram_size;
}
+int board_early_init_f()
+{
+#if defined(CONFIG_ST_SMI)
+ smi_init();
+#endif
+ return 0;
+}
int misc_init_r(void)
{
#if defined(CONFIG_CMD_NET)
@@ -84,6 +76,10 @@ int misc_init_r(void)
setenv("stdin", "usbtty");
setenv("stdout", "usbtty");
setenv("stderr", "usbtty");
+
+#ifndef CONFIG_SYS_NO_DCACHE
+ dcache_enable();
+#endif
#endif
return 0;
}
@@ -145,31 +141,18 @@ void spear_emi_init(void)
int spear_board_init(ulong mach_type)
{
- struct xloader_table *xloader_tb =
- (struct xloader_table *)XLOADER_TABLE_ADDRESS;
- struct xloader_table_1_2 *table_1_2;
- struct chip_data *chip = &chip_data;
-
gd->bd->bi_arch_number = mach_type;
/* adress of boot parameters */
gd->bd->bi_boot_params = CONFIG_BOOT_PARAMS_ADDR;
- /* CPU is initialized to work at 333MHz in Xloader */
- chip->cpufreq = 333;
-
- if (XLOADER_TABLE_VERSION_1_2 == xloader_tb->table_version) {
- table_1_2 = &xloader_tb->table.table_1_2;
- memcpy(chip->version, table_1_2->version,
- sizeof(chip->version));
- }
-
#ifdef CONFIG_SPEAR_EMI
spear_emi_init();
#endif
return 0;
}
+#if defined(CONFIG_CMD_NET)
static int i2c_read_mac(uchar *buffer)
{
u8 buf[2];
@@ -206,18 +189,18 @@ static int write_mac(uchar *mac)
return 0;
}
- puts("I2C EEPROM writing failed \n");
+ puts("I2C EEPROM writing failed\n");
return -1;
}
+#endif
int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
void (*sram_setfreq) (unsigned int, unsigned int);
- struct chip_data *chip = &chip_data;
+ unsigned int frequency;
+#if defined(CONFIG_CMD_NET)
unsigned char mac[6];
- unsigned int reg, frequency;
- char *s, *e;
- char i2c_mac[20];
+#endif
if ((argc > 3) || (argc < 2))
return cmd_usage(cmdtp);
@@ -236,19 +219,18 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (!strcmp(argv[1], "cpufreq")) {
sram_setfreq(CPU, frequency);
printf("CPU frequency changed to %u\n", frequency);
-
- chip->cpufreq = frequency;
} else {
sram_setfreq(DDR, frequency);
printf("DDR frequency changed to %u\n", frequency);
-
- chip->dramfreq = frequency;
}
return 0;
+
+#if defined(CONFIG_CMD_NET)
} else if (!strcmp(argv[1], "ethaddr")) {
- s = argv[2];
+ u32 reg;
+ char *e, *s = argv[2];
for (reg = 0; reg < 6; ++reg) {
mac[reg] = s ? simple_strtoul(s, &e, 16) : 0;
if (s)
@@ -257,34 +239,15 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
write_mac(mac);
return 0;
+#endif
} else if (!strcmp(argv[1], "print")) {
-
- if (chip->cpufreq == -1)
- printf("CPU Freq = Not Known\n");
- else
- printf("CPU Freq = %d MHz\n", chip->cpufreq);
-
- if (chip->dramfreq == -1)
- printf("DDR Freq = Not Known\n");
- else
- printf("DDR Freq = %d MHz\n", chip->dramfreq);
-
- if (chip->dramtype == DDRMOBILE)
- printf("DDR Type = MOBILE\n");
- else if (chip->dramtype == DDR2)
- printf("DDR Type = DDR2\n");
- else
- printf("DDR Type = Not Known\n");
-
+#if defined(CONFIG_CMD_NET)
if (!i2c_read_mac(mac)) {
- sprintf(i2c_mac, "%pM", mac);
- printf("Ethaddr (from i2c mem) = %s\n", i2c_mac);
+ printf("Ethaddr (from i2c mem) = %pM\n", mac);
} else {
printf("Ethaddr (from i2c mem) = Not set\n");
}
-
- printf("Xloader Rev = %s\n", chip->version);
-
+#endif
return 0;
}
@@ -294,4 +257,7 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
U_BOOT_CMD(chip_config, 3, 1, do_chip_config,
"configure chip",
"chip_config cpufreq/ddrfreq frequency\n"
+#if defined(CONFIG_CMD_NET)
+ "chip_config ethaddr XX:XX:XX:XX:XX:XX\n"
+#endif
"chip_config print");
OpenPOWER on IntegriCloud