mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
ssb: Remove home-grown printk wrappers
Replace the ssb printk wrappers by standard print helpers. Also remove SSB_SILENT. Nobody should use it anyway. Originally submitted by Joe Perches <joe@perches.com>. Modified to add dev_... based printks. Signed-off-by: Michael Buesch <m@bues.ch> Tested-by: Michael Buesch <m@bues.ch> Cc: Joe Perches <joe@perches.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
4d77a89e39
commit
b8b6069cf2
@ -89,21 +89,9 @@ config SSB_HOST_SOC
|
|||||||
|
|
||||||
If unsure, say N
|
If unsure, say N
|
||||||
|
|
||||||
config SSB_SILENT
|
|
||||||
bool "No SSB kernel messages"
|
|
||||||
depends on SSB && EXPERT
|
|
||||||
help
|
|
||||||
This option turns off all Sonics Silicon Backplane printks.
|
|
||||||
Note that you won't be able to identify problems, once
|
|
||||||
messages are turned off.
|
|
||||||
This might only be desired for production kernels on
|
|
||||||
embedded devices to reduce the kernel size.
|
|
||||||
|
|
||||||
Say N
|
|
||||||
|
|
||||||
config SSB_DEBUG
|
config SSB_DEBUG
|
||||||
bool "SSB debugging"
|
bool "SSB debugging"
|
||||||
depends on SSB && !SSB_SILENT
|
depends on SSB
|
||||||
help
|
help
|
||||||
This turns on additional runtime checks and debugging
|
This turns on additional runtime checks and debugging
|
||||||
messages. Turn this on for SSB troubleshooting.
|
messages. Turn this on for SSB troubleshooting.
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
static const struct pci_device_id b43_pci_bridge_tbl[] = {
|
static const struct pci_device_id b43_pci_bridge_tbl[] = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4301) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4301) },
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
@ -15,8 +17,6 @@
|
|||||||
#include <pcmcia/ds.h>
|
#include <pcmcia/ds.h>
|
||||||
#include <pcmcia/cisreg.h>
|
#include <pcmcia/cisreg.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
static const struct pcmcia_device_id ssb_host_pcmcia_tbl[] = {
|
static const struct pcmcia_device_id ssb_host_pcmcia_tbl[] = {
|
||||||
PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448),
|
PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448),
|
||||||
PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x476),
|
PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x476),
|
||||||
@ -70,7 +70,7 @@ static int ssb_host_pcmcia_probe(struct pcmcia_device *dev)
|
|||||||
err_kfree_ssb:
|
err_kfree_ssb:
|
||||||
kfree(ssb);
|
kfree(ssb);
|
||||||
out_error:
|
out_error:
|
||||||
ssb_err("Initialization failed (%d, %d)\n", res, err);
|
dev_err(&dev->dev, "Initialization failed (%d, %d)\n", res, err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/ssb/ssb_regs.h>
|
#include <linux/ssb/ssb_regs.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/bcm47xx_wdt.h>
|
#include <linux/bcm47xx_wdt.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Clock sources */
|
/* Clock sources */
|
||||||
enum ssb_clksrc {
|
enum ssb_clksrc {
|
||||||
@ -354,7 +354,7 @@ void ssb_chipcommon_init(struct ssb_chipcommon *cc)
|
|||||||
|
|
||||||
if (cc->dev->id.revision >= 11)
|
if (cc->dev->id.revision >= 11)
|
||||||
cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT);
|
cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT);
|
||||||
ssb_dbg("chipcommon status is 0x%x\n", cc->status);
|
dev_dbg(cc->dev->dev, "chipcommon status is 0x%x\n", cc->status);
|
||||||
|
|
||||||
if (cc->dev->id.revision >= 20) {
|
if (cc->dev->id.revision >= 20) {
|
||||||
chipco_write32(cc, SSB_CHIPCO_GPIOPULLUP, 0);
|
chipco_write32(cc, SSB_CHIPCO_GPIOPULLUP, 0);
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/ssb/ssb_regs.h>
|
#include <linux/ssb/ssb_regs.h>
|
||||||
#include <linux/ssb/ssb_driver_chipcommon.h>
|
#include <linux/ssb/ssb_driver_chipcommon.h>
|
||||||
@ -17,8 +19,6 @@
|
|||||||
#include <linux/bcm47xx_nvram.h>
|
#include <linux/bcm47xx_nvram.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
static u32 ssb_chipco_pll_read(struct ssb_chipcommon *cc, u32 offset)
|
static u32 ssb_chipco_pll_read(struct ssb_chipcommon *cc, u32 offset)
|
||||||
{
|
{
|
||||||
chipco_write32(cc, SSB_CHIPCO_PLLCTL_ADDR, offset);
|
chipco_write32(cc, SSB_CHIPCO_PLLCTL_ADDR, offset);
|
||||||
@ -110,7 +110,7 @@ static void ssb_pmu0_pllinit_r0(struct ssb_chipcommon *cc,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssb_info("Programming PLL to %u.%03u MHz\n",
|
dev_info(cc->dev->dev, "Programming PLL to %u.%03u MHz\n",
|
||||||
crystalfreq / 1000, crystalfreq % 1000);
|
crystalfreq / 1000, crystalfreq % 1000);
|
||||||
|
|
||||||
/* First turn the PLL off. */
|
/* First turn the PLL off. */
|
||||||
@ -138,7 +138,7 @@ static void ssb_pmu0_pllinit_r0(struct ssb_chipcommon *cc,
|
|||||||
}
|
}
|
||||||
tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
|
tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
|
||||||
if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
|
if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
|
||||||
ssb_emerg("Failed to turn the PLL off!\n");
|
dev_emerg(cc->dev->dev, "Failed to turn the PLL off!\n");
|
||||||
|
|
||||||
/* Set PDIV in PLL control 0. */
|
/* Set PDIV in PLL control 0. */
|
||||||
pllctl = ssb_chipco_pll_read(cc, SSB_PMU0_PLLCTL0);
|
pllctl = ssb_chipco_pll_read(cc, SSB_PMU0_PLLCTL0);
|
||||||
@ -249,7 +249,7 @@ static void ssb_pmu1_pllinit_r0(struct ssb_chipcommon *cc,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssb_info("Programming PLL to %u.%03u MHz\n",
|
dev_info(cc->dev->dev, "Programming PLL to %u.%03u MHz\n",
|
||||||
crystalfreq / 1000, crystalfreq % 1000);
|
crystalfreq / 1000, crystalfreq % 1000);
|
||||||
|
|
||||||
/* First turn the PLL off. */
|
/* First turn the PLL off. */
|
||||||
@ -275,7 +275,7 @@ static void ssb_pmu1_pllinit_r0(struct ssb_chipcommon *cc,
|
|||||||
}
|
}
|
||||||
tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
|
tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
|
||||||
if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
|
if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
|
||||||
ssb_emerg("Failed to turn the PLL off!\n");
|
dev_emerg(cc->dev->dev, "Failed to turn the PLL off!\n");
|
||||||
|
|
||||||
/* Set p1div and p2div. */
|
/* Set p1div and p2div. */
|
||||||
pllctl = ssb_chipco_pll_read(cc, SSB_PMU1_PLLCTL0);
|
pllctl = ssb_chipco_pll_read(cc, SSB_PMU1_PLLCTL0);
|
||||||
@ -349,7 +349,7 @@ static void ssb_pmu_pll_init(struct ssb_chipcommon *cc)
|
|||||||
case 43222:
|
case 43222:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssb_err("ERROR: PLL init unknown for device %04X\n",
|
dev_err(cc->dev->dev, "ERROR: PLL init unknown for device %04X\n",
|
||||||
bus->chip_id);
|
bus->chip_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -471,7 +471,7 @@ static void ssb_pmu_resources_init(struct ssb_chipcommon *cc)
|
|||||||
max_msk = 0xFFFFF;
|
max_msk = 0xFFFFF;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssb_err("ERROR: PMU resource config unknown for device %04X\n",
|
dev_err(cc->dev->dev, "ERROR: PMU resource config unknown for device %04X\n",
|
||||||
bus->chip_id);
|
bus->chip_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -524,7 +524,7 @@ void ssb_pmu_init(struct ssb_chipcommon *cc)
|
|||||||
pmucap = chipco_read32(cc, SSB_CHIPCO_PMU_CAP);
|
pmucap = chipco_read32(cc, SSB_CHIPCO_PMU_CAP);
|
||||||
cc->pmu.rev = (pmucap & SSB_CHIPCO_PMU_CAP_REVISION);
|
cc->pmu.rev = (pmucap & SSB_CHIPCO_PMU_CAP_REVISION);
|
||||||
|
|
||||||
ssb_dbg("Found rev %u PMU (capabilities 0x%08X)\n",
|
dev_dbg(cc->dev->dev, "Found rev %u PMU (capabilities 0x%08X)\n",
|
||||||
cc->pmu.rev, pmucap);
|
cc->pmu.rev, pmucap);
|
||||||
|
|
||||||
if (cc->pmu.rev == 1)
|
if (cc->pmu.rev == 1)
|
||||||
@ -636,7 +636,7 @@ u32 ssb_pmu_get_alp_clock(struct ssb_chipcommon *cc)
|
|||||||
case 0x5354:
|
case 0x5354:
|
||||||
return ssb_pmu_get_alp_clock_clk0(cc);
|
return ssb_pmu_get_alp_clock_clk0(cc);
|
||||||
default:
|
default:
|
||||||
ssb_err("ERROR: PMU alp clock unknown for device %04X\n",
|
dev_err(cc->dev->dev, "ERROR: PMU alp clock unknown for device %04X\n",
|
||||||
bus->chip_id);
|
bus->chip_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -651,7 +651,7 @@ u32 ssb_pmu_get_cpu_clock(struct ssb_chipcommon *cc)
|
|||||||
/* 5354 chip uses a non programmable PLL of frequency 240MHz */
|
/* 5354 chip uses a non programmable PLL of frequency 240MHz */
|
||||||
return 240000000;
|
return 240000000;
|
||||||
default:
|
default:
|
||||||
ssb_err("ERROR: PMU cpu clock unknown for device %04X\n",
|
dev_err(cc->dev->dev, "ERROR: PMU cpu clock unknown for device %04X\n",
|
||||||
bus->chip_id);
|
bus->chip_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -665,7 +665,7 @@ u32 ssb_pmu_get_controlclock(struct ssb_chipcommon *cc)
|
|||||||
case 0x5354:
|
case 0x5354:
|
||||||
return 120000000;
|
return 120000000;
|
||||||
default:
|
default:
|
||||||
ssb_err("ERROR: PMU controlclock unknown for device %04X\n",
|
dev_err(cc->dev->dev, "ERROR: PMU controlclock unknown for device %04X\n",
|
||||||
bus->chip_id);
|
bus->chip_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -705,9 +705,9 @@ void ssb_pmu_spuravoid_pllupdate(struct ssb_chipcommon *cc, int spuravoid)
|
|||||||
pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD;
|
pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssb_printk(KERN_ERR PFX
|
dev_err(cc->dev->dev,
|
||||||
"Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n",
|
"Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n",
|
||||||
cc->dev->bus->chip_id);
|
cc->dev->bus->chip_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
|
||||||
|
|
||||||
#include "ssb_private.h"
|
#include "ssb_private.h"
|
||||||
|
|
||||||
|
#include <linux/ssb/ssb.h>
|
||||||
|
|
||||||
static struct resource ssb_sflash_resource = {
|
static struct resource ssb_sflash_resource = {
|
||||||
.name = "ssb_sflash",
|
.name = "ssb_sflash",
|
||||||
.start = SSB_FLASH2,
|
.start = SSB_FLASH2,
|
||||||
@ -80,7 +80,7 @@ static void ssb_sflash_cmd(struct ssb_chipcommon *cc, u32 opcode)
|
|||||||
return;
|
return;
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
}
|
}
|
||||||
pr_err("SFLASH control command failed (timeout)!\n");
|
dev_err(cc->dev->dev, "SFLASH control command failed (timeout)!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize serial flash access */
|
/* Initialize serial flash access */
|
||||||
|
@ -10,12 +10,12 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/serial.h>
|
#include <linux/serial.h>
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_reg.h>
|
#include <linux/serial_reg.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
static inline u32 extif_read32(struct ssb_extif *extif, u16 offset)
|
static inline u32 extif_read32(struct ssb_extif *extif, u16 offset)
|
||||||
{
|
{
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/gpio/driver.h>
|
#include <linux/gpio/driver.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
@ -15,8 +17,6 @@
|
|||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* Shared
|
* Shared
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
|
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
@ -19,8 +21,6 @@
|
|||||||
#include <linux/bcm47xx_nvram.h>
|
#include <linux/bcm47xx_nvram.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
static const char * const part_probes[] = { "bcm47xxpart", NULL };
|
static const char * const part_probes[] = { "bcm47xxpart", NULL };
|
||||||
|
|
||||||
static struct physmap_flash_data ssb_pflash_data = {
|
static struct physmap_flash_data ssb_pflash_data = {
|
||||||
@ -170,14 +170,15 @@ static void set_irq(struct ssb_device *dev, unsigned int irq)
|
|||||||
irqflag |= (ipsflag & ~ipsflag_irq_mask[irq]);
|
irqflag |= (ipsflag & ~ipsflag_irq_mask[irq]);
|
||||||
ssb_write32(mdev, SSB_IPSFLAG, irqflag);
|
ssb_write32(mdev, SSB_IPSFLAG, irqflag);
|
||||||
}
|
}
|
||||||
ssb_dbg("set_irq: core 0x%04x, irq %d => %d\n",
|
dev_dbg(dev->dev, "set_irq: core 0x%04x, irq %d => %d\n",
|
||||||
dev->id.coreid, oldirq+2, irq+2);
|
dev->id.coreid, oldirq+2, irq+2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_irq(struct ssb_device *dev, unsigned int irq)
|
static void print_irq(struct ssb_device *dev, unsigned int irq)
|
||||||
{
|
{
|
||||||
static const char *irq_name[] = {"2(S)", "3", "4", "5", "6", "D", "I"};
|
static const char *irq_name[] = {"2(S)", "3", "4", "5", "6", "D", "I"};
|
||||||
ssb_dbg("core 0x%04x, irq : %s%s %s%s %s%s %s%s %s%s %s%s %s%s\n",
|
dev_dbg(dev->dev,
|
||||||
|
"core 0x%04x, irq : %s%s %s%s %s%s %s%s %s%s %s%s %s%s\n",
|
||||||
dev->id.coreid,
|
dev->id.coreid,
|
||||||
irq_name[0], irq == 0 ? "*" : " ",
|
irq_name[0], irq == 0 ? "*" : " ",
|
||||||
irq_name[1], irq == 1 ? "*" : " ",
|
irq_name[1], irq == 1 ? "*" : " ",
|
||||||
@ -229,11 +230,11 @@ static void ssb_mips_flash_detect(struct ssb_mipscore *mcore)
|
|||||||
switch (bus->chipco.capabilities & SSB_CHIPCO_CAP_FLASHT) {
|
switch (bus->chipco.capabilities & SSB_CHIPCO_CAP_FLASHT) {
|
||||||
case SSB_CHIPCO_FLASHT_STSER:
|
case SSB_CHIPCO_FLASHT_STSER:
|
||||||
case SSB_CHIPCO_FLASHT_ATSER:
|
case SSB_CHIPCO_FLASHT_ATSER:
|
||||||
pr_debug("Found serial flash\n");
|
dev_dbg(mcore->dev->dev, "Found serial flash\n");
|
||||||
ssb_sflash_init(&bus->chipco);
|
ssb_sflash_init(&bus->chipco);
|
||||||
break;
|
break;
|
||||||
case SSB_CHIPCO_FLASHT_PARA:
|
case SSB_CHIPCO_FLASHT_PARA:
|
||||||
pr_debug("Found parallel flash\n");
|
dev_dbg(mcore->dev->dev, "Found parallel flash\n");
|
||||||
pflash->present = true;
|
pflash->present = true;
|
||||||
pflash->window = SSB_FLASH2;
|
pflash->window = SSB_FLASH2;
|
||||||
pflash->window_size = SSB_FLASH2_SZ;
|
pflash->window_size = SSB_FLASH2_SZ;
|
||||||
@ -299,7 +300,7 @@ void ssb_mipscore_init(struct ssb_mipscore *mcore)
|
|||||||
if (!mcore->dev)
|
if (!mcore->dev)
|
||||||
return; /* We don't have a MIPS core */
|
return; /* We don't have a MIPS core */
|
||||||
|
|
||||||
ssb_dbg("Initializing MIPS core...\n");
|
dev_dbg(mcore->dev->dev, "Initializing MIPS core...\n");
|
||||||
|
|
||||||
bus = mcore->dev->bus;
|
bus = mcore->dev->bus;
|
||||||
hz = ssb_clockspeed(bus);
|
hz = ssb_clockspeed(bus);
|
||||||
@ -347,7 +348,7 @@ void ssb_mipscore_init(struct ssb_mipscore *mcore)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ssb_dbg("after irq reconfiguration\n");
|
dev_dbg(mcore->dev->dev, "after irq reconfiguration\n");
|
||||||
dump_irq(bus);
|
dump_irq(bus);
|
||||||
|
|
||||||
ssb_mips_serial_init(mcore);
|
ssb_mips_serial_init(mcore);
|
||||||
|
@ -8,14 +8,14 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/ssb/ssb_embedded.h>
|
#include <linux/ssb/ssb_embedded.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address);
|
static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address);
|
||||||
static void ssb_pcie_write(struct ssb_pcicore *pc, u32 address, u32 data);
|
static void ssb_pcie_write(struct ssb_pcicore *pc, u32 address, u32 data);
|
||||||
static u16 ssb_pcie_mdio_read(struct ssb_pcicore *pc, u8 device, u8 address);
|
static u16 ssb_pcie_mdio_read(struct ssb_pcicore *pc, u8 device, u8 address);
|
||||||
@ -263,7 +263,7 @@ int ssb_pcicore_plat_dev_init(struct pci_dev *d)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssb_info("PCI: Fixing up device %s\n", pci_name(d));
|
dev_info(&d->dev, "PCI: Fixing up device %s\n", pci_name(d));
|
||||||
|
|
||||||
/* Fix up interrupt lines */
|
/* Fix up interrupt lines */
|
||||||
d->irq = ssb_mips_irq(extpci_core->dev) + 2;
|
d->irq = ssb_mips_irq(extpci_core->dev) + 2;
|
||||||
@ -284,12 +284,12 @@ static void ssb_pcicore_fixup_pcibridge(struct pci_dev *dev)
|
|||||||
if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
|
if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ssb_info("PCI: Fixing up bridge %s\n", pci_name(dev));
|
dev_info(&dev->dev, "PCI: Fixing up bridge %s\n", pci_name(dev));
|
||||||
|
|
||||||
/* Enable PCI bridge bus mastering and memory space */
|
/* Enable PCI bridge bus mastering and memory space */
|
||||||
pci_set_master(dev);
|
pci_set_master(dev);
|
||||||
if (pcibios_enable_device(dev, ~0) < 0) {
|
if (pcibios_enable_device(dev, ~0) < 0) {
|
||||||
ssb_err("PCI: SSB bridge enable failed\n");
|
dev_err(&dev->dev, "PCI: SSB bridge enable failed\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +298,8 @@ static void ssb_pcicore_fixup_pcibridge(struct pci_dev *dev)
|
|||||||
|
|
||||||
/* Make sure our latency is high enough to handle the devices behind us */
|
/* Make sure our latency is high enough to handle the devices behind us */
|
||||||
lat = 168;
|
lat = 168;
|
||||||
ssb_info("PCI: Fixing latency timer of device %s to %u\n",
|
dev_info(&dev->dev,
|
||||||
|
"PCI: Fixing latency timer of device %s to %u\n",
|
||||||
pci_name(dev), lat);
|
pci_name(dev), lat);
|
||||||
pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
|
pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
|
||||||
}
|
}
|
||||||
@ -322,7 +323,7 @@ static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
|
|||||||
return;
|
return;
|
||||||
extpci_core = pc;
|
extpci_core = pc;
|
||||||
|
|
||||||
ssb_dbg("PCIcore in host mode found\n");
|
dev_dbg(pc->dev->dev, "PCIcore in host mode found\n");
|
||||||
/* Reset devices on the external PCI bus */
|
/* Reset devices on the external PCI bus */
|
||||||
val = SSB_PCICORE_CTL_RST_OE;
|
val = SSB_PCICORE_CTL_RST_OE;
|
||||||
val |= SSB_PCICORE_CTL_CLK_OE;
|
val |= SSB_PCICORE_CTL_CLK_OE;
|
||||||
@ -337,7 +338,7 @@ static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
|
|||||||
udelay(1); /* Assertion time demanded by the PCI standard */
|
udelay(1); /* Assertion time demanded by the PCI standard */
|
||||||
|
|
||||||
if (pc->dev->bus->has_cardbus_slot) {
|
if (pc->dev->bus->has_cardbus_slot) {
|
||||||
ssb_dbg("CardBus slot detected\n");
|
dev_dbg(pc->dev->dev, "CardBus slot detected\n");
|
||||||
pc->cardbusmode = 1;
|
pc->cardbusmode = 1;
|
||||||
/* GPIO 1 resets the bridge */
|
/* GPIO 1 resets the bridge */
|
||||||
ssb_gpio_out(pc->dev->bus, 1, 1);
|
ssb_gpio_out(pc->dev->bus, 1, 1);
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
@ -17,8 +19,6 @@
|
|||||||
#include <linux/ssb/ssb_driver_gige.h>
|
#include <linux/ssb/ssb_driver_gige.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks)
|
int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks)
|
||||||
{
|
{
|
||||||
@ -57,8 +57,8 @@ int ssb_watchdog_register(struct ssb_bus *bus)
|
|||||||
bus->busnumber, &wdt,
|
bus->busnumber, &wdt,
|
||||||
sizeof(wdt));
|
sizeof(wdt));
|
||||||
if (IS_ERR(pdev)) {
|
if (IS_ERR(pdev)) {
|
||||||
ssb_dbg("can not register watchdog device, err: %li\n",
|
pr_debug("can not register watchdog device, err: %li\n",
|
||||||
PTR_ERR(pdev));
|
PTR_ERR(pdev));
|
||||||
return PTR_ERR(pdev);
|
return PTR_ERR(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,11 +8,11 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/bcm47xx_nvram.h>
|
#include <linux/bcm47xx_nvram.h>
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
static u8 ssb_host_soc_read8(struct ssb_device *dev, u16 offset)
|
static u8 ssb_host_soc_read8(struct ssb_device *dev, u16 offset)
|
||||||
{
|
{
|
||||||
struct ssb_bus *bus = dev->bus;
|
struct ssb_bus *bus = dev->bus;
|
||||||
|
@ -256,7 +256,8 @@ int ssb_devices_thaw(struct ssb_freeze_context *ctx)
|
|||||||
|
|
||||||
err = sdrv->probe(sdev, &sdev->id);
|
err = sdrv->probe(sdev, &sdev->id);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("Failed to thaw device %s\n",
|
dev_err(sdev->dev,
|
||||||
|
"Failed to thaw device %s\n",
|
||||||
dev_name(sdev->dev));
|
dev_name(sdev->dev));
|
||||||
result = err;
|
result = err;
|
||||||
}
|
}
|
||||||
@ -431,9 +432,9 @@ void ssb_bus_unregister(struct ssb_bus *bus)
|
|||||||
|
|
||||||
err = ssb_gpio_unregister(bus);
|
err = ssb_gpio_unregister(bus);
|
||||||
if (err == -EBUSY)
|
if (err == -EBUSY)
|
||||||
ssb_dbg("Some GPIOs are still in use\n");
|
pr_debug("Some GPIOs are still in use\n");
|
||||||
else if (err)
|
else if (err)
|
||||||
ssb_dbg("Can not unregister GPIO driver: %i\n", err);
|
pr_debug("Can not unregister GPIO driver: %i\n", err);
|
||||||
|
|
||||||
ssb_buses_lock();
|
ssb_buses_lock();
|
||||||
ssb_devices_unregister(bus);
|
ssb_devices_unregister(bus);
|
||||||
@ -518,7 +519,7 @@ static int ssb_devices_register(struct ssb_bus *bus)
|
|||||||
sdev->dev = dev;
|
sdev->dev = dev;
|
||||||
err = device_register(dev);
|
err = device_register(dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("Could not register %s\n", dev_name(dev));
|
pr_err("Could not register %s\n", dev_name(dev));
|
||||||
/* Set dev to NULL to not unregister
|
/* Set dev to NULL to not unregister
|
||||||
* dev on error unwinding. */
|
* dev on error unwinding. */
|
||||||
sdev->dev = NULL;
|
sdev->dev = NULL;
|
||||||
@ -576,9 +577,9 @@ static int ssb_attach_queued_buses(void)
|
|||||||
|
|
||||||
err = ssb_gpio_init(bus);
|
err = ssb_gpio_init(bus);
|
||||||
if (err == -ENOTSUPP)
|
if (err == -ENOTSUPP)
|
||||||
ssb_dbg("GPIO driver not activated\n");
|
pr_debug("GPIO driver not activated\n");
|
||||||
else if (err)
|
else if (err)
|
||||||
ssb_dbg("Error registering GPIO driver: %i\n", err);
|
pr_debug("Error registering GPIO driver: %i\n", err);
|
||||||
|
|
||||||
ssb_bus_may_powerdown(bus);
|
ssb_bus_may_powerdown(bus);
|
||||||
|
|
||||||
@ -707,10 +708,12 @@ int ssb_bus_pcibus_register(struct ssb_bus *bus, struct pci_dev *host_pci)
|
|||||||
|
|
||||||
err = ssb_bus_register(bus, ssb_pci_get_invariants, 0);
|
err = ssb_bus_register(bus, ssb_pci_get_invariants, 0);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ssb_info("Sonics Silicon Backplane found on PCI device %s\n",
|
dev_info(&host_pci->dev,
|
||||||
|
"Sonics Silicon Backplane found on PCI device %s\n",
|
||||||
dev_name(&host_pci->dev));
|
dev_name(&host_pci->dev));
|
||||||
} else {
|
} else {
|
||||||
ssb_err("Failed to register PCI version of SSB with error %d\n",
|
dev_err(&host_pci->dev,
|
||||||
|
"Failed to register PCI version of SSB with error %d\n",
|
||||||
err);
|
err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -731,7 +734,8 @@ int ssb_bus_pcmciabus_register(struct ssb_bus *bus,
|
|||||||
|
|
||||||
err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr);
|
err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ssb_info("Sonics Silicon Backplane found on PCMCIA device %s\n",
|
dev_info(&pcmcia_dev->dev,
|
||||||
|
"Sonics Silicon Backplane found on PCMCIA device %s\n",
|
||||||
pcmcia_dev->devname);
|
pcmcia_dev->devname);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -752,7 +756,8 @@ int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func,
|
|||||||
|
|
||||||
err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0);
|
err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ssb_info("Sonics Silicon Backplane found on SDIO device %s\n",
|
dev_info(&func->dev,
|
||||||
|
"Sonics Silicon Backplane found on SDIO device %s\n",
|
||||||
sdio_func_id(func));
|
sdio_func_id(func));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -771,8 +776,8 @@ int ssb_bus_host_soc_register(struct ssb_bus *bus, unsigned long baseaddr)
|
|||||||
|
|
||||||
err = ssb_bus_register(bus, ssb_host_soc_get_invariants, baseaddr);
|
err = ssb_bus_register(bus, ssb_host_soc_get_invariants, baseaddr);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
ssb_info("Sonics Silicon Backplane found at address 0x%08lX\n",
|
pr_info("Sonics Silicon Backplane found at address 0x%08lX\n",
|
||||||
baseaddr);
|
baseaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@ -1057,9 +1062,9 @@ static int ssb_wait_bits(struct ssb_device *dev, u16 reg, u32 bitmask,
|
|||||||
}
|
}
|
||||||
udelay(10);
|
udelay(10);
|
||||||
}
|
}
|
||||||
printk(KERN_ERR PFX "Timeout waiting for bitmask %08X on "
|
dev_err(dev->dev,
|
||||||
"register %04X to %s.\n",
|
"Timeout waiting for bitmask %08X on register %04X to %s\n",
|
||||||
bitmask, reg, (set ? "set" : "clear"));
|
bitmask, reg, set ? "set" : "clear");
|
||||||
|
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
@ -1169,7 +1174,7 @@ int ssb_bus_may_powerdown(struct ssb_bus *bus)
|
|||||||
#endif
|
#endif
|
||||||
return err;
|
return err;
|
||||||
error:
|
error:
|
||||||
ssb_err("Bus powerdown failed\n");
|
pr_err("Bus powerdown failed\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ssb_bus_may_powerdown);
|
EXPORT_SYMBOL(ssb_bus_may_powerdown);
|
||||||
@ -1192,7 +1197,7 @@ int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
ssb_err("Bus powerup failed\n");
|
pr_err("Bus powerup failed\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ssb_bus_powerup);
|
EXPORT_SYMBOL(ssb_bus_powerup);
|
||||||
@ -1300,19 +1305,19 @@ static int __init ssb_modinit(void)
|
|||||||
|
|
||||||
err = b43_pci_ssb_bridge_init();
|
err = b43_pci_ssb_bridge_init();
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("Broadcom 43xx PCI-SSB-bridge initialization failed\n");
|
pr_err("Broadcom 43xx PCI-SSB-bridge initialization failed\n");
|
||||||
/* don't fail SSB init because of this */
|
/* don't fail SSB init because of this */
|
||||||
err = 0;
|
err = 0;
|
||||||
}
|
}
|
||||||
err = ssb_host_pcmcia_init();
|
err = ssb_host_pcmcia_init();
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("PCMCIA host initialization failed\n");
|
pr_err("PCMCIA host initialization failed\n");
|
||||||
/* don't fail SSB init because of this */
|
/* don't fail SSB init because of this */
|
||||||
err = 0;
|
err = 0;
|
||||||
}
|
}
|
||||||
err = ssb_gige_init();
|
err = ssb_gige_init();
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n");
|
pr_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n");
|
||||||
/* don't fail SSB init because of this */
|
/* don't fail SSB init because of this */
|
||||||
err = 0;
|
err = 0;
|
||||||
}
|
}
|
||||||
|
@ -15,14 +15,14 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/ssb/ssb_regs.h>
|
#include <linux/ssb/ssb_regs.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Define the following to 1 to enable a printk on each coreswitch. */
|
/* Define the following to 1 to enable a printk on each coreswitch. */
|
||||||
#define SSB_VERBOSE_PCICORESWITCH_DEBUG 0
|
#define SSB_VERBOSE_PCICORESWITCH_DEBUG 0
|
||||||
@ -56,7 +56,7 @@ int ssb_pci_switch_coreidx(struct ssb_bus *bus, u8 coreidx)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
ssb_err("Failed to switch to core %u\n", coreidx);
|
pr_err("Failed to switch to core %u\n", coreidx);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,9 +67,8 @@ int ssb_pci_switch_core(struct ssb_bus *bus,
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
#if SSB_VERBOSE_PCICORESWITCH_DEBUG
|
#if SSB_VERBOSE_PCICORESWITCH_DEBUG
|
||||||
ssb_info("Switching to %s core, index %d\n",
|
pr_info("Switching to %s core, index %d\n",
|
||||||
ssb_core_name(dev->id.coreid),
|
ssb_core_name(dev->id.coreid), dev->core_index);
|
||||||
dev->core_index);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
spin_lock_irqsave(&bus->bar_lock, flags);
|
spin_lock_irqsave(&bus->bar_lock, flags);
|
||||||
@ -161,7 +160,7 @@ int ssb_pci_xtal(struct ssb_bus *bus, u32 what, int turn_on)
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
err_pci:
|
err_pci:
|
||||||
printk(KERN_ERR PFX "Error: ssb_pci_xtal() could not access PCI config space!\n");
|
pr_err("Error: ssb_pci_xtal() could not access PCI config space!\n");
|
||||||
err = -EBUSY;
|
err = -EBUSY;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -286,7 +285,7 @@ static int sprom_do_write(struct ssb_bus *bus, const u16 *sprom)
|
|||||||
u32 spromctl;
|
u32 spromctl;
|
||||||
u16 size = bus->sprom_size;
|
u16 size = bus->sprom_size;
|
||||||
|
|
||||||
ssb_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
|
pr_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
|
||||||
err = pci_read_config_dword(pdev, SSB_SPROMCTL, &spromctl);
|
err = pci_read_config_dword(pdev, SSB_SPROMCTL, &spromctl);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_ctlreg;
|
goto err_ctlreg;
|
||||||
@ -294,17 +293,17 @@ static int sprom_do_write(struct ssb_bus *bus, const u16 *sprom)
|
|||||||
err = pci_write_config_dword(pdev, SSB_SPROMCTL, spromctl);
|
err = pci_write_config_dword(pdev, SSB_SPROMCTL, spromctl);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_ctlreg;
|
goto err_ctlreg;
|
||||||
ssb_notice("[ 0%%");
|
pr_notice("[ 0%%");
|
||||||
msleep(500);
|
msleep(500);
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
if (i == size / 4)
|
if (i == size / 4)
|
||||||
ssb_cont("25%%");
|
pr_cont("25%%");
|
||||||
else if (i == size / 2)
|
else if (i == size / 2)
|
||||||
ssb_cont("50%%");
|
pr_cont("50%%");
|
||||||
else if (i == (size * 3) / 4)
|
else if (i == (size * 3) / 4)
|
||||||
ssb_cont("75%%");
|
pr_cont("75%%");
|
||||||
else if (i % 2)
|
else if (i % 2)
|
||||||
ssb_cont(".");
|
pr_cont(".");
|
||||||
writew(sprom[i], bus->mmio + bus->sprom_offset + (i * 2));
|
writew(sprom[i], bus->mmio + bus->sprom_offset + (i * 2));
|
||||||
mmiowb();
|
mmiowb();
|
||||||
msleep(20);
|
msleep(20);
|
||||||
@ -317,12 +316,12 @@ static int sprom_do_write(struct ssb_bus *bus, const u16 *sprom)
|
|||||||
if (err)
|
if (err)
|
||||||
goto err_ctlreg;
|
goto err_ctlreg;
|
||||||
msleep(500);
|
msleep(500);
|
||||||
ssb_cont("100%% ]\n");
|
pr_cont("100%% ]\n");
|
||||||
ssb_notice("SPROM written\n");
|
pr_notice("SPROM written\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
err_ctlreg:
|
err_ctlreg:
|
||||||
ssb_err("Could not access SPROM control register.\n");
|
pr_err("Could not access SPROM control register.\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -816,7 +815,7 @@ static int sprom_extract(struct ssb_bus *bus, struct ssb_sprom *out,
|
|||||||
memset(out, 0, sizeof(*out));
|
memset(out, 0, sizeof(*out));
|
||||||
|
|
||||||
out->revision = in[size - 1] & 0x00FF;
|
out->revision = in[size - 1] & 0x00FF;
|
||||||
ssb_dbg("SPROM revision %d detected\n", out->revision);
|
pr_debug("SPROM revision %d detected\n", out->revision);
|
||||||
memset(out->et0mac, 0xFF, 6); /* preset et0 and et1 mac */
|
memset(out->et0mac, 0xFF, 6); /* preset et0 and et1 mac */
|
||||||
memset(out->et1mac, 0xFF, 6);
|
memset(out->et1mac, 0xFF, 6);
|
||||||
|
|
||||||
@ -825,7 +824,7 @@ static int sprom_extract(struct ssb_bus *bus, struct ssb_sprom *out,
|
|||||||
* number stored in the SPROM.
|
* number stored in the SPROM.
|
||||||
* Always extract r1. */
|
* Always extract r1. */
|
||||||
out->revision = 1;
|
out->revision = 1;
|
||||||
ssb_dbg("SPROM treated as revision %d\n", out->revision);
|
pr_debug("SPROM treated as revision %d\n", out->revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (out->revision) {
|
switch (out->revision) {
|
||||||
@ -842,8 +841,8 @@ static int sprom_extract(struct ssb_bus *bus, struct ssb_sprom *out,
|
|||||||
sprom_extract_r8(out, in);
|
sprom_extract_r8(out, in);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssb_warn("Unsupported SPROM revision %d detected. Will extract v1\n",
|
pr_warn("Unsupported SPROM revision %d detected. Will extract v1\n",
|
||||||
out->revision);
|
out->revision);
|
||||||
out->revision = 1;
|
out->revision = 1;
|
||||||
sprom_extract_r123(out, in);
|
sprom_extract_r123(out, in);
|
||||||
}
|
}
|
||||||
@ -863,7 +862,7 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
|
|||||||
u16 *buf;
|
u16 *buf;
|
||||||
|
|
||||||
if (!ssb_is_sprom_available(bus)) {
|
if (!ssb_is_sprom_available(bus)) {
|
||||||
ssb_err("No SPROM available!\n");
|
pr_err("No SPROM available!\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (bus->chipco.dev) { /* can be unavailable! */
|
if (bus->chipco.dev) { /* can be unavailable! */
|
||||||
@ -882,7 +881,7 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
|
|||||||
} else {
|
} else {
|
||||||
bus->sprom_offset = SSB_SPROM_BASE1;
|
bus->sprom_offset = SSB_SPROM_BASE1;
|
||||||
}
|
}
|
||||||
ssb_dbg("SPROM offset is 0x%x\n", bus->sprom_offset);
|
pr_debug("SPROM offset is 0x%x\n", bus->sprom_offset);
|
||||||
|
|
||||||
buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
|
buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
@ -907,16 +906,16 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus,
|
|||||||
* available for this device in some other storage */
|
* available for this device in some other storage */
|
||||||
err = ssb_fill_sprom_with_fallback(bus, sprom);
|
err = ssb_fill_sprom_with_fallback(bus, sprom);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_warn("WARNING: Using fallback SPROM failed (err %d)\n",
|
pr_warn("WARNING: Using fallback SPROM failed (err %d)\n",
|
||||||
err);
|
err);
|
||||||
goto out_free;
|
goto out_free;
|
||||||
} else {
|
} else {
|
||||||
ssb_dbg("Using SPROM revision %d provided by platform\n",
|
pr_debug("Using SPROM revision %d provided by platform\n",
|
||||||
sprom->revision);
|
sprom->revision);
|
||||||
err = 0;
|
err = 0;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
ssb_warn("WARNING: Invalid SPROM CRC (corrupt SPROM)\n");
|
pr_warn("WARNING: Invalid SPROM CRC (corrupt SPROM)\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = sprom_extract(bus, sprom, buf, bus->sprom_size);
|
err = sprom_extract(bus, sprom, buf, bus->sprom_size);
|
||||||
@ -953,8 +952,7 @@ static int ssb_pci_assert_buspower(struct ssb_bus *bus)
|
|||||||
if (likely(bus->powered_up))
|
if (likely(bus->powered_up))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
printk(KERN_ERR PFX "FATAL ERROR: Bus powered down "
|
pr_err("FATAL ERROR: Bus powered down while accessing PCI MMIO space\n");
|
||||||
"while accessing PCI MMIO space\n");
|
|
||||||
if (bus->power_warn_count <= 10) {
|
if (bus->power_warn_count <= 10) {
|
||||||
bus->power_warn_count++;
|
bus->power_warn_count++;
|
||||||
dump_stack();
|
dump_stack();
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
@ -18,8 +20,6 @@
|
|||||||
#include <pcmcia/ds.h>
|
#include <pcmcia/ds.h>
|
||||||
#include <pcmcia/cisreg.h>
|
#include <pcmcia/cisreg.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Define the following to 1 to enable a printk on each coreswitch. */
|
/* Define the following to 1 to enable a printk on each coreswitch. */
|
||||||
#define SSB_VERBOSE_PCMCIACORESWITCH_DEBUG 0
|
#define SSB_VERBOSE_PCMCIACORESWITCH_DEBUG 0
|
||||||
@ -143,7 +143,7 @@ int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
ssb_err("Failed to switch to core %u\n", coreidx);
|
pr_err("Failed to switch to core %u\n", coreidx);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,9 +152,8 @@ static int ssb_pcmcia_switch_core(struct ssb_bus *bus, struct ssb_device *dev)
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
#if SSB_VERBOSE_PCMCIACORESWITCH_DEBUG
|
#if SSB_VERBOSE_PCMCIACORESWITCH_DEBUG
|
||||||
ssb_info("Switching to %s core, index %d\n",
|
pr_info("Switching to %s core, index %d\n",
|
||||||
ssb_core_name(dev->id.coreid),
|
ssb_core_name(dev->id.coreid), dev->core_index);
|
||||||
dev->core_index);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
err = ssb_pcmcia_switch_coreidx(bus, dev->core_index);
|
err = ssb_pcmcia_switch_coreidx(bus, dev->core_index);
|
||||||
@ -190,7 +189,7 @@ int ssb_pcmcia_switch_segment(struct ssb_bus *bus, u8 seg)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
ssb_err("Failed to switch pcmcia segment\n");
|
pr_err("Failed to switch pcmcia segment\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -547,39 +546,39 @@ static int ssb_pcmcia_sprom_write_all(struct ssb_bus *bus, const u16 *sprom)
|
|||||||
bool failed = 0;
|
bool failed = 0;
|
||||||
size_t size = SSB_PCMCIA_SPROM_SIZE;
|
size_t size = SSB_PCMCIA_SPROM_SIZE;
|
||||||
|
|
||||||
ssb_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
|
pr_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
|
||||||
err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEEN);
|
err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEEN);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_notice("Could not enable SPROM write access\n");
|
pr_notice("Could not enable SPROM write access\n");
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
ssb_notice("[ 0%%");
|
pr_notice("[ 0%%");
|
||||||
msleep(500);
|
msleep(500);
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
if (i == size / 4)
|
if (i == size / 4)
|
||||||
ssb_cont("25%%");
|
pr_cont("25%%");
|
||||||
else if (i == size / 2)
|
else if (i == size / 2)
|
||||||
ssb_cont("50%%");
|
pr_cont("50%%");
|
||||||
else if (i == (size * 3) / 4)
|
else if (i == (size * 3) / 4)
|
||||||
ssb_cont("75%%");
|
pr_cont("75%%");
|
||||||
else if (i % 2)
|
else if (i % 2)
|
||||||
ssb_cont(".");
|
pr_cont(".");
|
||||||
err = ssb_pcmcia_sprom_write(bus, i, sprom[i]);
|
err = ssb_pcmcia_sprom_write(bus, i, sprom[i]);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_notice("Failed to write to SPROM\n");
|
pr_notice("Failed to write to SPROM\n");
|
||||||
failed = 1;
|
failed = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEDIS);
|
err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEDIS);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_notice("Could not disable SPROM write access\n");
|
pr_notice("Could not disable SPROM write access\n");
|
||||||
failed = 1;
|
failed = 1;
|
||||||
}
|
}
|
||||||
msleep(500);
|
msleep(500);
|
||||||
if (!failed) {
|
if (!failed) {
|
||||||
ssb_cont("100%% ]\n");
|
pr_cont("100%% ]\n");
|
||||||
ssb_notice("SPROM written\n");
|
pr_notice("SPROM written\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return failed ? -EBUSY : 0;
|
return failed ? -EBUSY : 0;
|
||||||
@ -693,9 +692,8 @@ static int ssb_pcmcia_do_get_invariants(struct pcmcia_device *p_dev,
|
|||||||
return -ENOSPC; /* continue with next entry */
|
return -ENOSPC; /* continue with next entry */
|
||||||
|
|
||||||
error:
|
error:
|
||||||
ssb_err(
|
pr_err("PCMCIA: Failed to fetch device invariants: %s\n",
|
||||||
"PCMCIA: Failed to fetch device invariants: %s\n",
|
error_description);
|
||||||
error_description);
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -715,8 +713,7 @@ int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
|
|||||||
res = pcmcia_loop_tuple(bus->host_pcmcia, CISTPL_FUNCE,
|
res = pcmcia_loop_tuple(bus->host_pcmcia, CISTPL_FUNCE,
|
||||||
ssb_pcmcia_get_mac, sprom);
|
ssb_pcmcia_get_mac, sprom);
|
||||||
if (res != 0) {
|
if (res != 0) {
|
||||||
ssb_err(
|
pr_err("PCMCIA: Failed to fetch MAC address\n");
|
||||||
"PCMCIA: Failed to fetch MAC address\n");
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -726,8 +723,7 @@ int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
|
|||||||
if ((res == 0) || (res == -ENOSPC))
|
if ((res == 0) || (res == -ENOSPC))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ssb_err(
|
pr_err("PCMCIA: Failed to fetch device invariants\n");
|
||||||
"PCMCIA: Failed to fetch device invariants\n");
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,6 +832,6 @@ int ssb_pcmcia_init(struct ssb_bus *bus)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
ssb_err("Failed to initialize PCMCIA host device\n");
|
pr_err("Failed to initialize PCMCIA host device\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
* Licensed under the GNU/GPL. See COPYING for details.
|
* Licensed under the GNU/GPL. See COPYING for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/ssb/ssb_regs.h>
|
#include <linux/ssb/ssb_regs.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
@ -20,8 +22,6 @@
|
|||||||
#include <pcmcia/cistpl.h>
|
#include <pcmcia/cistpl.h>
|
||||||
#include <pcmcia/ds.h>
|
#include <pcmcia/ds.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
|
|
||||||
const char *ssb_core_name(u16 coreid)
|
const char *ssb_core_name(u16 coreid)
|
||||||
{
|
{
|
||||||
@ -125,7 +125,7 @@ static u16 pcidev_to_chipid(struct pci_dev *pci_dev)
|
|||||||
chipid_fallback = 0x4401;
|
chipid_fallback = 0x4401;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ssb_err("PCI-ID not in fallback list\n");
|
dev_err(&pci_dev->dev, "PCI-ID not in fallback list\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return chipid_fallback;
|
return chipid_fallback;
|
||||||
@ -151,7 +151,7 @@ static u8 chipid_to_nrcores(u16 chipid)
|
|||||||
case 0x4704:
|
case 0x4704:
|
||||||
return 9;
|
return 9;
|
||||||
default:
|
default:
|
||||||
ssb_err("CHIPID not in nrcores fallback list\n");
|
pr_err("CHIPID not in nrcores fallback list\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -318,13 +318,13 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
bus->chip_package = 0;
|
bus->chip_package = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ssb_info("Found chip with id 0x%04X, rev 0x%02X and package 0x%02X\n",
|
pr_info("Found chip with id 0x%04X, rev 0x%02X and package 0x%02X\n",
|
||||||
bus->chip_id, bus->chip_rev, bus->chip_package);
|
bus->chip_id, bus->chip_rev, bus->chip_package);
|
||||||
if (!bus->nr_devices)
|
if (!bus->nr_devices)
|
||||||
bus->nr_devices = chipid_to_nrcores(bus->chip_id);
|
bus->nr_devices = chipid_to_nrcores(bus->chip_id);
|
||||||
if (bus->nr_devices > ARRAY_SIZE(bus->devices)) {
|
if (bus->nr_devices > ARRAY_SIZE(bus->devices)) {
|
||||||
ssb_err("More than %d ssb cores found (%d)\n",
|
pr_err("More than %d ssb cores found (%d)\n",
|
||||||
SSB_MAX_NR_CORES, bus->nr_devices);
|
SSB_MAX_NR_CORES, bus->nr_devices);
|
||||||
goto err_unmap;
|
goto err_unmap;
|
||||||
}
|
}
|
||||||
if (bus->bustype == SSB_BUSTYPE_SSB) {
|
if (bus->bustype == SSB_BUSTYPE_SSB) {
|
||||||
@ -355,18 +355,16 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
dev->bus = bus;
|
dev->bus = bus;
|
||||||
dev->ops = bus->ops;
|
dev->ops = bus->ops;
|
||||||
|
|
||||||
printk(KERN_DEBUG PFX
|
pr_debug("Core %d found: %s (cc 0x%03X, rev 0x%02X, vendor 0x%04X)\n",
|
||||||
"Core %d found: %s "
|
i, ssb_core_name(dev->id.coreid),
|
||||||
"(cc 0x%03X, rev 0x%02X, vendor 0x%04X)\n",
|
dev->id.coreid, dev->id.revision, dev->id.vendor);
|
||||||
i, ssb_core_name(dev->id.coreid),
|
|
||||||
dev->id.coreid, dev->id.revision, dev->id.vendor);
|
|
||||||
|
|
||||||
switch (dev->id.coreid) {
|
switch (dev->id.coreid) {
|
||||||
case SSB_DEV_80211:
|
case SSB_DEV_80211:
|
||||||
nr_80211_cores++;
|
nr_80211_cores++;
|
||||||
if (nr_80211_cores > 1) {
|
if (nr_80211_cores > 1) {
|
||||||
if (!we_support_multiple_80211_cores(bus)) {
|
if (!we_support_multiple_80211_cores(bus)) {
|
||||||
ssb_dbg("Ignoring additional 802.11 core\n");
|
pr_debug("Ignoring additional 802.11 core\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -374,7 +372,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
case SSB_DEV_EXTIF:
|
case SSB_DEV_EXTIF:
|
||||||
#ifdef CONFIG_SSB_DRIVER_EXTIF
|
#ifdef CONFIG_SSB_DRIVER_EXTIF
|
||||||
if (bus->extif.dev) {
|
if (bus->extif.dev) {
|
||||||
ssb_warn("WARNING: Multiple EXTIFs found\n");
|
pr_warn("WARNING: Multiple EXTIFs found\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bus->extif.dev = dev;
|
bus->extif.dev = dev;
|
||||||
@ -382,7 +380,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
break;
|
break;
|
||||||
case SSB_DEV_CHIPCOMMON:
|
case SSB_DEV_CHIPCOMMON:
|
||||||
if (bus->chipco.dev) {
|
if (bus->chipco.dev) {
|
||||||
ssb_warn("WARNING: Multiple ChipCommon found\n");
|
pr_warn("WARNING: Multiple ChipCommon found\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bus->chipco.dev = dev;
|
bus->chipco.dev = dev;
|
||||||
@ -391,7 +389,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
case SSB_DEV_MIPS_3302:
|
case SSB_DEV_MIPS_3302:
|
||||||
#ifdef CONFIG_SSB_DRIVER_MIPS
|
#ifdef CONFIG_SSB_DRIVER_MIPS
|
||||||
if (bus->mipscore.dev) {
|
if (bus->mipscore.dev) {
|
||||||
ssb_warn("WARNING: Multiple MIPS cores found\n");
|
pr_warn("WARNING: Multiple MIPS cores found\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bus->mipscore.dev = dev;
|
bus->mipscore.dev = dev;
|
||||||
@ -412,7 +410,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bus->pcicore.dev) {
|
if (bus->pcicore.dev) {
|
||||||
ssb_warn("WARNING: Multiple PCI(E) cores found\n");
|
pr_warn("WARNING: Multiple PCI(E) cores found\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
bus->pcicore.dev = dev;
|
bus->pcicore.dev = dev;
|
||||||
|
@ -12,14 +12,14 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ssb_private.h"
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/mmc/sdio_func.h>
|
#include <linux/mmc/sdio_func.h>
|
||||||
|
|
||||||
#include "ssb_private.h"
|
|
||||||
|
|
||||||
/* Define the following to 1 to enable a printk on each coreswitch. */
|
/* Define the following to 1 to enable a printk on each coreswitch. */
|
||||||
#define SSB_VERBOSE_SDIOCORESWITCH_DEBUG 0
|
#define SSB_VERBOSE_SDIOCORESWITCH_DEBUG 0
|
||||||
|
|
||||||
|
@ -127,13 +127,13 @@ ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
|
|||||||
goto out_kfree;
|
goto out_kfree;
|
||||||
err = ssb_devices_freeze(bus, &freeze);
|
err = ssb_devices_freeze(bus, &freeze);
|
||||||
if (err) {
|
if (err) {
|
||||||
ssb_err("SPROM write: Could not freeze all devices\n");
|
pr_err("SPROM write: Could not freeze all devices\n");
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
res = sprom_write(bus, sprom);
|
res = sprom_write(bus, sprom);
|
||||||
err = ssb_devices_thaw(&freeze);
|
err = ssb_devices_thaw(&freeze);
|
||||||
if (err)
|
if (err)
|
||||||
ssb_err("SPROM write: Could not thaw all devices\n");
|
pr_err("SPROM write: Could not thaw all devices\n");
|
||||||
out_unlock:
|
out_unlock:
|
||||||
mutex_unlock(&bus->sprom_mutex);
|
mutex_unlock(&bus->sprom_mutex);
|
||||||
out_kfree:
|
out_kfree:
|
||||||
|
@ -2,37 +2,13 @@
|
|||||||
#ifndef LINUX_SSB_PRIVATE_H_
|
#ifndef LINUX_SSB_PRIVATE_H_
|
||||||
#define LINUX_SSB_PRIVATE_H_
|
#define LINUX_SSB_PRIVATE_H_
|
||||||
|
|
||||||
|
#define PFX "ssb: "
|
||||||
|
#define pr_fmt(fmt) PFX fmt
|
||||||
|
|
||||||
#include <linux/ssb/ssb.h>
|
#include <linux/ssb/ssb.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/bcm47xx_wdt.h>
|
#include <linux/bcm47xx_wdt.h>
|
||||||
|
|
||||||
|
|
||||||
#define PFX "ssb: "
|
|
||||||
|
|
||||||
#ifdef CONFIG_SSB_SILENT
|
|
||||||
# define ssb_printk(fmt, ...) \
|
|
||||||
do { if (0) printk(fmt, ##__VA_ARGS__); } while (0)
|
|
||||||
#else
|
|
||||||
# define ssb_printk(fmt, ...) \
|
|
||||||
printk(fmt, ##__VA_ARGS__)
|
|
||||||
#endif /* CONFIG_SSB_SILENT */
|
|
||||||
|
|
||||||
#define ssb_emerg(fmt, ...) ssb_printk(KERN_EMERG PFX fmt, ##__VA_ARGS__)
|
|
||||||
#define ssb_err(fmt, ...) ssb_printk(KERN_ERR PFX fmt, ##__VA_ARGS__)
|
|
||||||
#define ssb_warn(fmt, ...) ssb_printk(KERN_WARNING PFX fmt, ##__VA_ARGS__)
|
|
||||||
#define ssb_notice(fmt, ...) ssb_printk(KERN_NOTICE PFX fmt, ##__VA_ARGS__)
|
|
||||||
#define ssb_info(fmt, ...) ssb_printk(KERN_INFO PFX fmt, ##__VA_ARGS__)
|
|
||||||
#define ssb_cont(fmt, ...) ssb_printk(KERN_CONT fmt, ##__VA_ARGS__)
|
|
||||||
|
|
||||||
/* dprintk: Debugging printk; vanishes for non-debug compilation */
|
|
||||||
#ifdef CONFIG_SSB_DEBUG
|
|
||||||
# define ssb_dbg(fmt, ...) \
|
|
||||||
ssb_printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__)
|
|
||||||
#else
|
|
||||||
# define ssb_dbg(fmt, ...) \
|
|
||||||
do { if (0) printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__); } while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_SSB_DEBUG
|
#ifdef CONFIG_SSB_DEBUG
|
||||||
# define SSB_WARN_ON(x) WARN_ON(x)
|
# define SSB_WARN_ON(x) WARN_ON(x)
|
||||||
# define SSB_BUG_ON(x) BUG_ON(x)
|
# define SSB_BUG_ON(x) BUG_ON(x)
|
||||||
|
Loading…
Reference in New Issue
Block a user