brcm47xx: fix Linux-3.0 and fix clock rate detection.

SVN-Revision: 27294
owl
Hauke Mehrtens 2011-06-27 20:20:11 +00:00
parent c1873c46b8
commit e439de144f
5 changed files with 123 additions and 2 deletions

View File

@ -31,7 +31,7 @@
} }
--- a/drivers/ssb/main.c --- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c +++ b/drivers/ssb/main.c
@@ -1103,6 +1103,8 @@ u32 ssb_clockspeed(struct ssb_bus *bus) @@ -1104,6 +1104,8 @@ u32 ssb_clockspeed(struct ssb_bus *bus)
if (bus->chip_id == 0x5365) { if (bus->chip_id == 0x5365) {
rate = 100000000; rate = 100000000;

View File

@ -0,0 +1,68 @@
--- a/drivers/mtd/maps/bcm47xx-flash.c
+++ b/drivers/mtd/maps/bcm47xx-flash.c
@@ -44,9 +44,7 @@
#include <linux/wait.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
-#ifdef CONFIG_MTD_PARTITIONS
#include <linux/mtd/partitions.h>
-#endif
#include <linux/crc32.h>
#ifdef CONFIG_SSB
#include <linux/ssb/ssb.h>
@@ -120,7 +118,6 @@ static struct map_info bcm47xx_map = {
phys: WINDOW_ADDR,
};
-#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition bcm47xx_parts[] = {
{ name: "cfe", offset: 0, size: 0, mask_flags: MTD_WRITEABLE, },
@@ -552,7 +549,6 @@ init_mtd_partitions(struct mtd_info *mtd
return bcm47xx_parts;
}
-#endif
int __init init_bcm47xx_map(void)
{
@@ -561,10 +557,8 @@ int __init init_bcm47xx_map(void)
#endif
size_t size;
int ret = 0;
-#ifdef CONFIG_MTD_PARTITIONS
struct mtd_partition *parts;
int i;
-#endif
#ifdef CONFIG_SSB
u32 window = mcore->flash_window;
@@ -602,15 +596,13 @@ int __init init_bcm47xx_map(void)
printk(KERN_NOTICE "Flash device: 0x%x at 0x%x\n", size, WINDOW_ADDR);
-#ifdef CONFIG_MTD_PARTITIONS
parts = init_mtd_partitions(bcm47xx_mtd, size);
for (i = 0; parts[i].name; i++);
- ret = add_mtd_partitions(bcm47xx_mtd, parts, i);
+ ret = mtd_device_register(bcm47xx_mtd, parts, i);
if (ret) {
- printk(KERN_ERR "Flash: add_mtd_partitions failed\n");
+ printk(KERN_ERR "Flash: mtd_device_register failed\n");
goto fail;
}
-#endif
return 0;
fail:
@@ -624,9 +616,7 @@ int __init init_bcm47xx_map(void)
void __exit cleanup_bcm47xx_map(void)
{
-#ifdef CONFIG_MTD_PARTITIONS
- del_mtd_partitions(bcm47xx_mtd);
-#endif
+ mtd_device_unregister(bcm47xx_mtd);
map_destroy(bcm47xx_mtd);
iounmap((void *)bcm47xx_map.virt);
}

View File

@ -0,0 +1,28 @@
--- a/drivers/ssb/driver_pcicore.c
+++ b/drivers/ssb/driver_pcicore.c
@@ -412,16 +412,6 @@ static int __devinit pcicore_is_in_hostm
* Workarounds.
**************************************************/
-static void __devinit ssb_pcicore_fix_sprom_core_index(struct ssb_pcicore *pc)
-{
- u16 tmp = pcicore_read16(pc, SSB_PCICORE_SPROM(0));
- if (((tmp & 0xF000) >> 12) != pc->dev->core_index) {
- tmp &= ~0xF000;
- tmp |= (pc->dev->core_index << 12);
- pcicore_write16(pc, SSB_PCICORE_SPROM(0), tmp);
- }
-}
-
static u8 ssb_pcicore_polarity_workaround(struct ssb_pcicore *pc)
{
return (ssb_pcie_read(pc, 0x204) & 0x10) ? 0xC0 : 0x80;
@@ -529,8 +519,6 @@ void __devinit ssb_pcicore_init(struct s
if (!ssb_device_is_enabled(dev))
ssb_device_enable(dev, 0);
- ssb_pcicore_fix_sprom_core_index(pc);
-
#ifdef CONFIG_SSB_PCICORE_HOSTMODE
pc->hostmode = pcicore_is_in_hostmode(pc);
if (pc->hostmode)

View File

@ -0,0 +1,25 @@
From 974353557959d8ec1c022511cd1b3eeaa7ed482a Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sat, 4 Jun 2011 15:55:24 +0200
Subject: [PATCH 15/15] ssb: fix ssb clock rate according to broadcom source
This fix was done according to si_clock_rate function in broadcom siutils.c
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
drivers/ssb/main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -1002,8 +1002,8 @@ u32 ssb_calc_clock_rate(u32 plltype, u32
switch (plltype) {
case SSB_PLLTYPE_6: /* 100/200 or 120/240 only */
if (m & SSB_CHIPCO_CLK_T6_MMASK)
- return SSB_CHIPCO_CLK_T6_M0;
- return SSB_CHIPCO_CLK_T6_M1;
+ return SSB_CHIPCO_CLK_T6_M1;
+ return SSB_CHIPCO_CLK_T6_M0;
case SSB_PLLTYPE_1: /* 48Mhz base, 3 dividers */
case SSB_PLLTYPE_3: /* 25Mhz, 2 dividers */
case SSB_PLLTYPE_4: /* 48Mhz, 4 dividers */

View File

@ -1,6 +1,6 @@
--- a/drivers/ssb/driver_pcicore.c --- a/drivers/ssb/driver_pcicore.c
+++ b/drivers/ssb/driver_pcicore.c +++ b/drivers/ssb/driver_pcicore.c
@@ -375,7 +375,7 @@ static void ssb_pcicore_init_hostmode(st @@ -375,7 +375,7 @@ static void __devinit ssb_pcicore_init_h
set_io_port_base(ssb_pcicore_controller.io_map_base); set_io_port_base(ssb_pcicore_controller.io_map_base);
/* Give some time to the PCI controller to configure itself with the new /* Give some time to the PCI controller to configure itself with the new
* values. Not waiting at this point causes crashes of the machine. */ * values. Not waiting at this point causes crashes of the machine. */