fix flash driver, it should work on RB150 as well

SVN-Revision: 9418
master
Gabor Juhos 17 years ago
parent ce9584fad9
commit 71f9b205e4
  1. 3
      target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
  2. 18
      target/linux/adm5120/files/drivers/mtd/maps/adm5120-flash.c
  3. 1
      target/linux/adm5120/files/include/asm-mips/mach-adm5120/adm5120_platform.h

@ -140,6 +140,7 @@ static unsigned char rb133c_vlans[6] __initdata = {
static unsigned char rb15x_vlans[6] __initdata = { static unsigned char rb15x_vlans[6] __initdata = {
/* FIXME: untested */ /* FIXME: untested */
0x41, 0x42, 0x44, 0x48, 0x50, 0x00 0x41, 0x42, 0x44, 0x48, 0x50, 0x00
};
static unsigned char rb192_vlans[6] __initdata = { static unsigned char rb192_vlans[6] __initdata = {
/* FIXME: untested */ /* FIXME: untested */
@ -261,6 +262,8 @@ static void __init rb150_setup(void)
adm5120_nand_data.ctrl.cmd_ctrl = rb150_nand_cmd_ctrl; adm5120_nand_data.ctrl.cmd_ctrl = rb150_nand_cmd_ctrl;
adm5120_nand_data.ctrl.dev_ready = rb150_nand_ready; adm5120_nand_data.ctrl.dev_ready = rb150_nand_ready;
adm5120_flash0_data.window_size = 512*1024;
rb1xx_flash_setup(); rb1xx_flash_setup();
rb1xx_mac_setup(); rb1xx_mac_setup();
} }

@ -244,7 +244,7 @@ static int adm5120_flash_initinfo(struct adm5120_flash_info *info,
struct map_info *map = &info->amap.map; struct map_info *map = &info->amap.map;
struct adm5120_flash_platform_data *pdata = dev->dev.platform_data; struct adm5120_flash_platform_data *pdata = dev->dev.platform_data;
struct flash_desc *fdesc; struct flash_desc *fdesc;
u32 t; u32 t = 0;
map->name = dev->dev.bus_id; map->name = dev->dev.bus_id;
@ -255,12 +255,18 @@ static int adm5120_flash_initinfo(struct adm5120_flash_info *info,
fdesc = &flash_descs[dev->id]; fdesc = &flash_descs[dev->id];
/* get memory window size */ if (pdata)
t = SW_READ_REG(MEMCTRL) >> fdesc->srs_shift; info->amap.window_size = pdata->window_size;
t &= MEMCTRL_SRS_MASK;
info->amap.window_size = flash_sizes[t]; if (info->amap.window_size == 0) {
/* get memory window size */
t = SW_READ_REG(MEMCTRL) >> fdesc->srs_shift;
t &= MEMCTRL_SRS_MASK;
info->amap.window_size = flash_sizes[t];
}
if (info->amap.window_size == 0) { if (info->amap.window_size == 0) {
MAP_ERR(map, "invalid flash size detected\n"); MAP_ERR(map, "unable to determine window size\n");
goto err_out; goto err_out;
} }

@ -39,6 +39,7 @@
struct adm5120_flash_platform_data { struct adm5120_flash_platform_data {
void (*set_vpp)(struct map_info *, int); void (*set_vpp)(struct map_info *, int);
void (*switch_bank)(unsigned); void (*switch_bank)(unsigned);
u32 window_size;
#ifdef CONFIG_MTD_PARTITIONS #ifdef CONFIG_MTD_PARTITIONS
unsigned int nr_parts; unsigned int nr_parts;
struct mtd_partition *parts; struct mtd_partition *parts;

Loading…
Cancel
Save