mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 16:43:09 +02:00
brcm47xx: fix Linux-3.0 and fix clock rate detection.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27294 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
85dd88a3c6
commit
951d6d8330
@ -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;
|
||||||
|
68
target/linux/brcm47xx/patches-3.0/230-flash_linux_3_0.patch
Normal file
68
target/linux/brcm47xx/patches-3.0/230-flash_linux_3_0.patch
Normal 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);
|
||||||
|
}
|
@ -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)
|
@ -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 */
|
@ -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. */
|
||||||
|
Loading…
Reference in New Issue
Block a user