020-ssb_update.patch 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075
  1. --- a/drivers/ssb/driver_chipcommon.c
  2. +++ b/drivers/ssb/driver_chipcommon.c
  3. @@ -354,7 +354,7 @@ void ssb_chipcommon_init(struct ssb_chip
  4. if (cc->dev->id.revision >= 11)
  5. cc->status = chipco_read32(cc, SSB_CHIPCO_CHIPSTAT);
  6. - ssb_dprintk(KERN_INFO PFX "chipcommon status is 0x%x\n", cc->status);
  7. + ssb_dbg("chipcommon status is 0x%x\n", cc->status);
  8. if (cc->dev->id.revision >= 20) {
  9. chipco_write32(cc, SSB_CHIPCO_GPIOPULLUP, 0);
  10. --- a/drivers/ssb/driver_chipcommon_pmu.c
  11. +++ b/drivers/ssb/driver_chipcommon_pmu.c
  12. @@ -110,8 +110,8 @@ static void ssb_pmu0_pllinit_r0(struct s
  13. return;
  14. }
  15. - ssb_printk(KERN_INFO PFX "Programming PLL to %u.%03u MHz\n",
  16. - (crystalfreq / 1000), (crystalfreq % 1000));
  17. + ssb_info("Programming PLL to %u.%03u MHz\n",
  18. + crystalfreq / 1000, crystalfreq % 1000);
  19. /* First turn the PLL off. */
  20. switch (bus->chip_id) {
  21. @@ -138,7 +138,7 @@ static void ssb_pmu0_pllinit_r0(struct s
  22. }
  23. tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
  24. if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
  25. - ssb_printk(KERN_EMERG PFX "Failed to turn the PLL off!\n");
  26. + ssb_emerg("Failed to turn the PLL off!\n");
  27. /* Set PDIV in PLL control 0. */
  28. pllctl = ssb_chipco_pll_read(cc, SSB_PMU0_PLLCTL0);
  29. @@ -249,8 +249,8 @@ static void ssb_pmu1_pllinit_r0(struct s
  30. return;
  31. }
  32. - ssb_printk(KERN_INFO PFX "Programming PLL to %u.%03u MHz\n",
  33. - (crystalfreq / 1000), (crystalfreq % 1000));
  34. + ssb_info("Programming PLL to %u.%03u MHz\n",
  35. + crystalfreq / 1000, crystalfreq % 1000);
  36. /* First turn the PLL off. */
  37. switch (bus->chip_id) {
  38. @@ -275,7 +275,7 @@ static void ssb_pmu1_pllinit_r0(struct s
  39. }
  40. tmp = chipco_read32(cc, SSB_CHIPCO_CLKCTLST);
  41. if (tmp & SSB_CHIPCO_CLKCTLST_HAVEHT)
  42. - ssb_printk(KERN_EMERG PFX "Failed to turn the PLL off!\n");
  43. + ssb_emerg("Failed to turn the PLL off!\n");
  44. /* Set p1div and p2div. */
  45. pllctl = ssb_chipco_pll_read(cc, SSB_PMU1_PLLCTL0);
  46. @@ -349,9 +349,8 @@ static void ssb_pmu_pll_init(struct ssb_
  47. case 43222:
  48. break;
  49. default:
  50. - ssb_printk(KERN_ERR PFX
  51. - "ERROR: PLL init unknown for device %04X\n",
  52. - bus->chip_id);
  53. + ssb_err("ERROR: PLL init unknown for device %04X\n",
  54. + bus->chip_id);
  55. }
  56. }
  57. @@ -472,9 +471,8 @@ static void ssb_pmu_resources_init(struc
  58. max_msk = 0xFFFFF;
  59. break;
  60. default:
  61. - ssb_printk(KERN_ERR PFX
  62. - "ERROR: PMU resource config unknown for device %04X\n",
  63. - bus->chip_id);
  64. + ssb_err("ERROR: PMU resource config unknown for device %04X\n",
  65. + bus->chip_id);
  66. }
  67. if (updown_tab) {
  68. @@ -526,8 +524,8 @@ void ssb_pmu_init(struct ssb_chipcommon
  69. pmucap = chipco_read32(cc, SSB_CHIPCO_PMU_CAP);
  70. cc->pmu.rev = (pmucap & SSB_CHIPCO_PMU_CAP_REVISION);
  71. - ssb_dprintk(KERN_DEBUG PFX "Found rev %u PMU (capabilities 0x%08X)\n",
  72. - cc->pmu.rev, pmucap);
  73. + ssb_dbg("Found rev %u PMU (capabilities 0x%08X)\n",
  74. + cc->pmu.rev, pmucap);
  75. if (cc->pmu.rev == 1)
  76. chipco_mask32(cc, SSB_CHIPCO_PMU_CTL,
  77. @@ -638,9 +636,8 @@ u32 ssb_pmu_get_alp_clock(struct ssb_chi
  78. case 0x5354:
  79. ssb_pmu_get_alp_clock_clk0(cc);
  80. default:
  81. - ssb_printk(KERN_ERR PFX
  82. - "ERROR: PMU alp clock unknown for device %04X\n",
  83. - bus->chip_id);
  84. + ssb_err("ERROR: PMU alp clock unknown for device %04X\n",
  85. + bus->chip_id);
  86. return 0;
  87. }
  88. }
  89. @@ -654,9 +651,8 @@ u32 ssb_pmu_get_cpu_clock(struct ssb_chi
  90. /* 5354 chip uses a non programmable PLL of frequency 240MHz */
  91. return 240000000;
  92. default:
  93. - ssb_printk(KERN_ERR PFX
  94. - "ERROR: PMU cpu clock unknown for device %04X\n",
  95. - bus->chip_id);
  96. + ssb_err("ERROR: PMU cpu clock unknown for device %04X\n",
  97. + bus->chip_id);
  98. return 0;
  99. }
  100. }
  101. @@ -669,9 +665,8 @@ u32 ssb_pmu_get_controlclock(struct ssb_
  102. case 0x5354:
  103. return 120000000;
  104. default:
  105. - ssb_printk(KERN_ERR PFX
  106. - "ERROR: PMU controlclock unknown for device %04X\n",
  107. - bus->chip_id);
  108. + ssb_err("ERROR: PMU controlclock unknown for device %04X\n",
  109. + bus->chip_id);
  110. return 0;
  111. }
  112. }
  113. @@ -692,8 +687,23 @@ void ssb_pmu_spuravoid_pllupdate(struct
  114. pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD;
  115. break;
  116. case 43222:
  117. - /* TODO: BCM43222 requires updating PLLs too */
  118. - return;
  119. + if (spuravoid == 1) {
  120. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL0, 0x11500008);
  121. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL1, 0x0C000C06);
  122. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x0F600a08);
  123. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL3, 0x00000000);
  124. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL4, 0x2001E920);
  125. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL5, 0x88888815);
  126. + } else {
  127. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL0, 0x11100008);
  128. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL1, 0x0c000c06);
  129. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x03000a08);
  130. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL3, 0x00000000);
  131. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL4, 0x200005c0);
  132. + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL5, 0x88888855);
  133. + }
  134. + pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD;
  135. + break;
  136. default:
  137. ssb_printk(KERN_ERR PFX
  138. "Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n",
  139. --- a/drivers/ssb/driver_mipscore.c
  140. +++ b/drivers/ssb/driver_mipscore.c
  141. @@ -167,21 +167,22 @@ static void set_irq(struct ssb_device *d
  142. irqflag |= (ipsflag & ~ipsflag_irq_mask[irq]);
  143. ssb_write32(mdev, SSB_IPSFLAG, irqflag);
  144. }
  145. - ssb_dprintk(KERN_INFO PFX
  146. - "set_irq: core 0x%04x, irq %d => %d\n",
  147. - dev->id.coreid, oldirq+2, irq+2);
  148. + ssb_dbg("set_irq: core 0x%04x, irq %d => %d\n",
  149. + dev->id.coreid, oldirq+2, irq+2);
  150. }
  151. static void print_irq(struct ssb_device *dev, unsigned int irq)
  152. {
  153. - int i;
  154. static const char *irq_name[] = {"2(S)", "3", "4", "5", "6", "D", "I"};
  155. - ssb_dprintk(KERN_INFO PFX
  156. - "core 0x%04x, irq :", dev->id.coreid);
  157. - for (i = 0; i <= 6; i++) {
  158. - ssb_dprintk(" %s%s", irq_name[i], i==irq?"*":" ");
  159. - }
  160. - ssb_dprintk("\n");
  161. + ssb_dbg("core 0x%04x, irq : %s%s %s%s %s%s %s%s %s%s %s%s %s%s\n",
  162. + dev->id.coreid,
  163. + irq_name[0], irq == 0 ? "*" : " ",
  164. + irq_name[1], irq == 1 ? "*" : " ",
  165. + irq_name[2], irq == 2 ? "*" : " ",
  166. + irq_name[3], irq == 3 ? "*" : " ",
  167. + irq_name[4], irq == 4 ? "*" : " ",
  168. + irq_name[5], irq == 5 ? "*" : " ",
  169. + irq_name[6], irq == 6 ? "*" : " ");
  170. }
  171. static void dump_irq(struct ssb_bus *bus)
  172. @@ -286,7 +287,7 @@ void ssb_mipscore_init(struct ssb_mipsco
  173. if (!mcore->dev)
  174. return; /* We don't have a MIPS core */
  175. - ssb_dprintk(KERN_INFO PFX "Initializing MIPS core...\n");
  176. + ssb_dbg("Initializing MIPS core...\n");
  177. bus = mcore->dev->bus;
  178. hz = ssb_clockspeed(bus);
  179. @@ -334,7 +335,7 @@ void ssb_mipscore_init(struct ssb_mipsco
  180. break;
  181. }
  182. }
  183. - ssb_dprintk(KERN_INFO PFX "after irq reconfiguration\n");
  184. + ssb_dbg("after irq reconfiguration\n");
  185. dump_irq(bus);
  186. ssb_mips_serial_init(mcore);
  187. --- a/drivers/ssb/driver_pcicore.c
  188. +++ b/drivers/ssb/driver_pcicore.c
  189. @@ -263,8 +263,7 @@ int ssb_pcicore_plat_dev_init(struct pci
  190. return -ENODEV;
  191. }
  192. - ssb_printk(KERN_INFO "PCI: Fixing up device %s\n",
  193. - pci_name(d));
  194. + ssb_info("PCI: Fixing up device %s\n", pci_name(d));
  195. /* Fix up interrupt lines */
  196. d->irq = ssb_mips_irq(extpci_core->dev) + 2;
  197. @@ -285,12 +284,12 @@ static void ssb_pcicore_fixup_pcibridge(
  198. if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
  199. return;
  200. - ssb_printk(KERN_INFO "PCI: Fixing up bridge %s\n", pci_name(dev));
  201. + ssb_info("PCI: Fixing up bridge %s\n", pci_name(dev));
  202. /* Enable PCI bridge bus mastering and memory space */
  203. pci_set_master(dev);
  204. if (pcibios_enable_device(dev, ~0) < 0) {
  205. - ssb_printk(KERN_ERR "PCI: SSB bridge enable failed\n");
  206. + ssb_err("PCI: SSB bridge enable failed\n");
  207. return;
  208. }
  209. @@ -299,8 +298,8 @@ static void ssb_pcicore_fixup_pcibridge(
  210. /* Make sure our latency is high enough to handle the devices behind us */
  211. lat = 168;
  212. - ssb_printk(KERN_INFO "PCI: Fixing latency timer of device %s to %u\n",
  213. - pci_name(dev), lat);
  214. + ssb_info("PCI: Fixing latency timer of device %s to %u\n",
  215. + pci_name(dev), lat);
  216. pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
  217. }
  218. DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_pcicore_fixup_pcibridge);
  219. @@ -323,7 +322,7 @@ static void ssb_pcicore_init_hostmode(st
  220. return;
  221. extpci_core = pc;
  222. - ssb_dprintk(KERN_INFO PFX "PCIcore in host mode found\n");
  223. + ssb_dbg("PCIcore in host mode found\n");
  224. /* Reset devices on the external PCI bus */
  225. val = SSB_PCICORE_CTL_RST_OE;
  226. val |= SSB_PCICORE_CTL_CLK_OE;
  227. @@ -338,7 +337,7 @@ static void ssb_pcicore_init_hostmode(st
  228. udelay(1); /* Assertion time demanded by the PCI standard */
  229. if (pc->dev->bus->has_cardbus_slot) {
  230. - ssb_dprintk(KERN_INFO PFX "CardBus slot detected\n");
  231. + ssb_dbg("CardBus slot detected\n");
  232. pc->cardbusmode = 1;
  233. /* GPIO 1 resets the bridge */
  234. ssb_gpio_out(pc->dev->bus, 1, 1);
  235. --- a/drivers/ssb/embedded.c
  236. +++ b/drivers/ssb/embedded.c
  237. @@ -57,9 +57,8 @@ int ssb_watchdog_register(struct ssb_bus
  238. bus->busnumber, &wdt,
  239. sizeof(wdt));
  240. if (IS_ERR(pdev)) {
  241. - ssb_dprintk(KERN_INFO PFX
  242. - "can not register watchdog device, err: %li\n",
  243. - PTR_ERR(pdev));
  244. + ssb_dbg("can not register watchdog device, err: %li\n",
  245. + PTR_ERR(pdev));
  246. return PTR_ERR(pdev);
  247. }
  248. --- a/drivers/ssb/main.c
  249. +++ b/drivers/ssb/main.c
  250. @@ -275,8 +275,8 @@ int ssb_devices_thaw(struct ssb_freeze_c
  251. err = sdrv->probe(sdev, &sdev->id);
  252. if (err) {
  253. - ssb_printk(KERN_ERR PFX "Failed to thaw device %s\n",
  254. - dev_name(sdev->dev));
  255. + ssb_err("Failed to thaw device %s\n",
  256. + dev_name(sdev->dev));
  257. result = err;
  258. }
  259. ssb_device_put(sdev);
  260. @@ -447,10 +447,9 @@ void ssb_bus_unregister(struct ssb_bus *
  261. err = ssb_gpio_unregister(bus);
  262. if (err == -EBUSY)
  263. - ssb_dprintk(KERN_ERR PFX "Some GPIOs are still in use.\n");
  264. + ssb_dbg("Some GPIOs are still in use\n");
  265. else if (err)
  266. - ssb_dprintk(KERN_ERR PFX
  267. - "Can not unregister GPIO driver: %i\n", err);
  268. + ssb_dbg("Can not unregister GPIO driver: %i\n", err);
  269. ssb_buses_lock();
  270. ssb_devices_unregister(bus);
  271. @@ -497,8 +496,7 @@ static int ssb_devices_register(struct s
  272. devwrap = kzalloc(sizeof(*devwrap), GFP_KERNEL);
  273. if (!devwrap) {
  274. - ssb_printk(KERN_ERR PFX
  275. - "Could not allocate device\n");
  276. + ssb_err("Could not allocate device\n");
  277. err = -ENOMEM;
  278. goto error;
  279. }
  280. @@ -537,9 +535,7 @@ static int ssb_devices_register(struct s
  281. sdev->dev = dev;
  282. err = device_register(dev);
  283. if (err) {
  284. - ssb_printk(KERN_ERR PFX
  285. - "Could not register %s\n",
  286. - dev_name(dev));
  287. + ssb_err("Could not register %s\n", dev_name(dev));
  288. /* Set dev to NULL to not unregister
  289. * dev on error unwinding. */
  290. sdev->dev = NULL;
  291. @@ -825,10 +821,9 @@ static int ssb_bus_register(struct ssb_b
  292. ssb_mipscore_init(&bus->mipscore);
  293. err = ssb_gpio_init(bus);
  294. if (err == -ENOTSUPP)
  295. - ssb_dprintk(KERN_DEBUG PFX "GPIO driver not activated\n");
  296. + ssb_dbg("GPIO driver not activated\n");
  297. else if (err)
  298. - ssb_dprintk(KERN_ERR PFX
  299. - "Error registering GPIO driver: %i\n", err);
  300. + ssb_dbg("Error registering GPIO driver: %i\n", err);
  301. err = ssb_fetch_invariants(bus, get_invariants);
  302. if (err) {
  303. ssb_bus_may_powerdown(bus);
  304. @@ -878,11 +873,11 @@ int ssb_bus_pcibus_register(struct ssb_b
  305. err = ssb_bus_register(bus, ssb_pci_get_invariants, 0);
  306. if (!err) {
  307. - ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on "
  308. - "PCI device %s\n", dev_name(&host_pci->dev));
  309. + ssb_info("Sonics Silicon Backplane found on PCI device %s\n",
  310. + dev_name(&host_pci->dev));
  311. } else {
  312. - ssb_printk(KERN_ERR PFX "Failed to register PCI version"
  313. - " of SSB with error %d\n", err);
  314. + ssb_err("Failed to register PCI version of SSB with error %d\n",
  315. + err);
  316. }
  317. return err;
  318. @@ -903,8 +898,8 @@ int ssb_bus_pcmciabus_register(struct ss
  319. err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr);
  320. if (!err) {
  321. - ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on "
  322. - "PCMCIA device %s\n", pcmcia_dev->devname);
  323. + ssb_info("Sonics Silicon Backplane found on PCMCIA device %s\n",
  324. + pcmcia_dev->devname);
  325. }
  326. return err;
  327. @@ -925,8 +920,8 @@ int ssb_bus_sdiobus_register(struct ssb_
  328. err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0);
  329. if (!err) {
  330. - ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on "
  331. - "SDIO device %s\n", sdio_func_id(func));
  332. + ssb_info("Sonics Silicon Backplane found on SDIO device %s\n",
  333. + sdio_func_id(func));
  334. }
  335. return err;
  336. @@ -944,8 +939,8 @@ int ssb_bus_ssbbus_register(struct ssb_b
  337. err = ssb_bus_register(bus, get_invariants, baseaddr);
  338. if (!err) {
  339. - ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found at "
  340. - "address 0x%08lX\n", baseaddr);
  341. + ssb_info("Sonics Silicon Backplane found at address 0x%08lX\n",
  342. + baseaddr);
  343. }
  344. return err;
  345. @@ -1339,7 +1334,7 @@ out:
  346. #endif
  347. return err;
  348. error:
  349. - ssb_printk(KERN_ERR PFX "Bus powerdown failed\n");
  350. + ssb_err("Bus powerdown failed\n");
  351. goto out;
  352. }
  353. EXPORT_SYMBOL(ssb_bus_may_powerdown);
  354. @@ -1362,7 +1357,7 @@ int ssb_bus_powerup(struct ssb_bus *bus,
  355. return 0;
  356. error:
  357. - ssb_printk(KERN_ERR PFX "Bus powerup failed\n");
  358. + ssb_err("Bus powerup failed\n");
  359. return err;
  360. }
  361. EXPORT_SYMBOL(ssb_bus_powerup);
  362. @@ -1470,15 +1465,13 @@ static int __init ssb_modinit(void)
  363. err = b43_pci_ssb_bridge_init();
  364. if (err) {
  365. - ssb_printk(KERN_ERR "Broadcom 43xx PCI-SSB-bridge "
  366. - "initialization failed\n");
  367. + ssb_err("Broadcom 43xx PCI-SSB-bridge initialization failed\n");
  368. /* don't fail SSB init because of this */
  369. err = 0;
  370. }
  371. err = ssb_gige_init();
  372. if (err) {
  373. - ssb_printk(KERN_ERR "SSB Broadcom Gigabit Ethernet "
  374. - "driver initialization failed\n");
  375. + ssb_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n");
  376. /* don't fail SSB init because of this */
  377. err = 0;
  378. }
  379. --- a/drivers/ssb/pci.c
  380. +++ b/drivers/ssb/pci.c
  381. @@ -56,7 +56,7 @@ int ssb_pci_switch_coreidx(struct ssb_bu
  382. }
  383. return 0;
  384. error:
  385. - ssb_printk(KERN_ERR PFX "Failed to switch to core %u\n", coreidx);
  386. + ssb_err("Failed to switch to core %u\n", coreidx);
  387. return -ENODEV;
  388. }
  389. @@ -67,10 +67,9 @@ int ssb_pci_switch_core(struct ssb_bus *
  390. unsigned long flags;
  391. #if SSB_VERBOSE_PCICORESWITCH_DEBUG
  392. - ssb_printk(KERN_INFO PFX
  393. - "Switching to %s core, index %d\n",
  394. - ssb_core_name(dev->id.coreid),
  395. - dev->core_index);
  396. + ssb_info("Switching to %s core, index %d\n",
  397. + ssb_core_name(dev->id.coreid),
  398. + dev->core_index);
  399. #endif
  400. spin_lock_irqsave(&bus->bar_lock, flags);
  401. @@ -231,6 +230,15 @@ static inline u8 ssb_crc8(u8 crc, u8 dat
  402. return t[crc ^ data];
  403. }
  404. +static void sprom_get_mac(char *mac, const u16 *in)
  405. +{
  406. + int i;
  407. + for (i = 0; i < 3; i++) {
  408. + *mac++ = in[i] >> 8;
  409. + *mac++ = in[i];
  410. + }
  411. +}
  412. +
  413. static u8 ssb_sprom_crc(const u16 *sprom, u16 size)
  414. {
  415. int word;
  416. @@ -278,7 +286,7 @@ static int sprom_do_write(struct ssb_bus
  417. u32 spromctl;
  418. u16 size = bus->sprom_size;
  419. - ssb_printk(KERN_NOTICE PFX "Writing SPROM. Do NOT turn off the power! Please stand by...\n");
  420. + ssb_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
  421. err = pci_read_config_dword(pdev, SSB_SPROMCTL, &spromctl);
  422. if (err)
  423. goto err_ctlreg;
  424. @@ -286,17 +294,17 @@ static int sprom_do_write(struct ssb_bus
  425. err = pci_write_config_dword(pdev, SSB_SPROMCTL, spromctl);
  426. if (err)
  427. goto err_ctlreg;
  428. - ssb_printk(KERN_NOTICE PFX "[ 0%%");
  429. + ssb_notice("[ 0%%");
  430. msleep(500);
  431. for (i = 0; i < size; i++) {
  432. if (i == size / 4)
  433. - ssb_printk("25%%");
  434. + ssb_cont("25%%");
  435. else if (i == size / 2)
  436. - ssb_printk("50%%");
  437. + ssb_cont("50%%");
  438. else if (i == (size * 3) / 4)
  439. - ssb_printk("75%%");
  440. + ssb_cont("75%%");
  441. else if (i % 2)
  442. - ssb_printk(".");
  443. + ssb_cont(".");
  444. writew(sprom[i], bus->mmio + bus->sprom_offset + (i * 2));
  445. mmiowb();
  446. msleep(20);
  447. @@ -309,12 +317,12 @@ static int sprom_do_write(struct ssb_bus
  448. if (err)
  449. goto err_ctlreg;
  450. msleep(500);
  451. - ssb_printk("100%% ]\n");
  452. - ssb_printk(KERN_NOTICE PFX "SPROM written.\n");
  453. + ssb_cont("100%% ]\n");
  454. + ssb_notice("SPROM written\n");
  455. return 0;
  456. err_ctlreg:
  457. - ssb_printk(KERN_ERR PFX "Could not access SPROM control register.\n");
  458. + ssb_err("Could not access SPROM control register.\n");
  459. return err;
  460. }
  461. @@ -339,10 +347,23 @@ static s8 r123_extract_antgain(u8 sprom_
  462. return (s8)gain;
  463. }
  464. +static void sprom_extract_r23(struct ssb_sprom *out, const u16 *in)
  465. +{
  466. + SPEX(boardflags_hi, SSB_SPROM2_BFLHI, 0xFFFF, 0);
  467. + SPEX(opo, SSB_SPROM2_OPO, SSB_SPROM2_OPO_VALUE, 0);
  468. + SPEX(pa1lob0, SSB_SPROM2_PA1LOB0, 0xFFFF, 0);
  469. + SPEX(pa1lob1, SSB_SPROM2_PA1LOB1, 0xFFFF, 0);
  470. + SPEX(pa1lob2, SSB_SPROM2_PA1LOB2, 0xFFFF, 0);
  471. + SPEX(pa1hib0, SSB_SPROM2_PA1HIB0, 0xFFFF, 0);
  472. + SPEX(pa1hib1, SSB_SPROM2_PA1HIB1, 0xFFFF, 0);
  473. + SPEX(pa1hib2, SSB_SPROM2_PA1HIB2, 0xFFFF, 0);
  474. + SPEX(maxpwr_ah, SSB_SPROM2_MAXP_A, SSB_SPROM2_MAXP_A_HI, 0);
  475. + SPEX(maxpwr_al, SSB_SPROM2_MAXP_A, SSB_SPROM2_MAXP_A_LO,
  476. + SSB_SPROM2_MAXP_A_LO_SHIFT);
  477. +}
  478. +
  479. static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
  480. {
  481. - int i;
  482. - u16 v;
  483. u16 loc[3];
  484. if (out->revision == 3) /* rev 3 moved MAC */
  485. @@ -352,19 +373,10 @@ static void sprom_extract_r123(struct ss
  486. loc[1] = SSB_SPROM1_ET0MAC;
  487. loc[2] = SSB_SPROM1_ET1MAC;
  488. }
  489. - for (i = 0; i < 3; i++) {
  490. - v = in[SPOFF(loc[0]) + i];
  491. - *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
  492. - }
  493. + sprom_get_mac(out->il0mac, &in[SPOFF(loc[0])]);
  494. if (out->revision < 3) { /* only rev 1-2 have et0, et1 */
  495. - for (i = 0; i < 3; i++) {
  496. - v = in[SPOFF(loc[1]) + i];
  497. - *(((__be16 *)out->et0mac) + i) = cpu_to_be16(v);
  498. - }
  499. - for (i = 0; i < 3; i++) {
  500. - v = in[SPOFF(loc[2]) + i];
  501. - *(((__be16 *)out->et1mac) + i) = cpu_to_be16(v);
  502. - }
  503. + sprom_get_mac(out->et0mac, &in[SPOFF(loc[1])]);
  504. + sprom_get_mac(out->et1mac, &in[SPOFF(loc[2])]);
  505. }
  506. SPEX(et0phyaddr, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET0A, 0);
  507. SPEX(et1phyaddr, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET1A,
  508. @@ -372,6 +384,7 @@ static void sprom_extract_r123(struct ss
  509. SPEX(et0mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET0M, 14);
  510. SPEX(et1mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET1M, 15);
  511. SPEX(board_rev, SSB_SPROM1_BINF, SSB_SPROM1_BINF_BREV, 0);
  512. + SPEX(board_type, SSB_SPROM1_SPID, 0xFFFF, 0);
  513. if (out->revision == 1)
  514. SPEX(country_code, SSB_SPROM1_BINF, SSB_SPROM1_BINF_CCODE,
  515. SSB_SPROM1_BINF_CCODE_SHIFT);
  516. @@ -398,8 +411,7 @@ static void sprom_extract_r123(struct ss
  517. SSB_SPROM1_ITSSI_A_SHIFT);
  518. SPEX(itssi_bg, SSB_SPROM1_ITSSI, SSB_SPROM1_ITSSI_BG, 0);
  519. SPEX(boardflags_lo, SSB_SPROM1_BFLLO, 0xFFFF, 0);
  520. - if (out->revision >= 2)
  521. - SPEX(boardflags_hi, SSB_SPROM2_BFLHI, 0xFFFF, 0);
  522. +
  523. SPEX(alpha2[0], SSB_SPROM1_CCODE, 0xff00, 8);
  524. SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0);
  525. @@ -410,6 +422,8 @@ static void sprom_extract_r123(struct ss
  526. out->antenna_gain.a1 = r123_extract_antgain(out->revision, in,
  527. SSB_SPROM1_AGAIN_A,
  528. SSB_SPROM1_AGAIN_A_SHIFT);
  529. + if (out->revision >= 2)
  530. + sprom_extract_r23(out, in);
  531. }
  532. /* Revs 4 5 and 8 have partially shared layout */
  533. @@ -454,23 +468,20 @@ static void sprom_extract_r458(struct ss
  534. static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
  535. {
  536. - int i;
  537. - u16 v;
  538. u16 il0mac_offset;
  539. if (out->revision == 4)
  540. il0mac_offset = SSB_SPROM4_IL0MAC;
  541. else
  542. il0mac_offset = SSB_SPROM5_IL0MAC;
  543. - /* extract the MAC address */
  544. - for (i = 0; i < 3; i++) {
  545. - v = in[SPOFF(il0mac_offset) + i];
  546. - *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
  547. - }
  548. +
  549. + sprom_get_mac(out->il0mac, &in[SPOFF(il0mac_offset)]);
  550. +
  551. SPEX(et0phyaddr, SSB_SPROM4_ETHPHY, SSB_SPROM4_ETHPHY_ET0A, 0);
  552. SPEX(et1phyaddr, SSB_SPROM4_ETHPHY, SSB_SPROM4_ETHPHY_ET1A,
  553. SSB_SPROM4_ETHPHY_ET1A_SHIFT);
  554. SPEX(board_rev, SSB_SPROM4_BOARDREV, 0xFFFF, 0);
  555. + SPEX(board_type, SSB_SPROM1_SPID, 0xFFFF, 0);
  556. if (out->revision == 4) {
  557. SPEX(alpha2[0], SSB_SPROM4_CCODE, 0xff00, 8);
  558. SPEX(alpha2[1], SSB_SPROM4_CCODE, 0x00ff, 0);
  559. @@ -530,7 +541,7 @@ static void sprom_extract_r45(struct ssb
  560. static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
  561. {
  562. int i;
  563. - u16 v, o;
  564. + u16 o;
  565. u16 pwr_info_offset[] = {
  566. SSB_SROM8_PWR_INFO_CORE0, SSB_SROM8_PWR_INFO_CORE1,
  567. SSB_SROM8_PWR_INFO_CORE2, SSB_SROM8_PWR_INFO_CORE3
  568. @@ -539,11 +550,10 @@ static void sprom_extract_r8(struct ssb_
  569. ARRAY_SIZE(out->core_pwr_info));
  570. /* extract the MAC address */
  571. - for (i = 0; i < 3; i++) {
  572. - v = in[SPOFF(SSB_SPROM8_IL0MAC) + i];
  573. - *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
  574. - }
  575. + sprom_get_mac(out->il0mac, &in[SPOFF(SSB_SPROM8_IL0MAC)]);
  576. +
  577. SPEX(board_rev, SSB_SPROM8_BOARDREV, 0xFFFF, 0);
  578. + SPEX(board_type, SSB_SPROM1_SPID, 0xFFFF, 0);
  579. SPEX(alpha2[0], SSB_SPROM8_CCODE, 0xff00, 8);
  580. SPEX(alpha2[1], SSB_SPROM8_CCODE, 0x00ff, 0);
  581. SPEX(boardflags_lo, SSB_SPROM8_BFLLO, 0xFFFF, 0);
  582. @@ -743,7 +753,7 @@ static int sprom_extract(struct ssb_bus
  583. memset(out, 0, sizeof(*out));
  584. out->revision = in[size - 1] & 0x00FF;
  585. - ssb_dprintk(KERN_DEBUG PFX "SPROM revision %d detected.\n", out->revision);
  586. + ssb_dbg("SPROM revision %d detected\n", out->revision);
  587. memset(out->et0mac, 0xFF, 6); /* preset et0 and et1 mac */
  588. memset(out->et1mac, 0xFF, 6);
  589. @@ -752,7 +762,7 @@ static int sprom_extract(struct ssb_bus
  590. * number stored in the SPROM.
  591. * Always extract r1. */
  592. out->revision = 1;
  593. - ssb_dprintk(KERN_DEBUG PFX "SPROM treated as revision %d\n", out->revision);
  594. + ssb_dbg("SPROM treated as revision %d\n", out->revision);
  595. }
  596. switch (out->revision) {
  597. @@ -769,9 +779,8 @@ static int sprom_extract(struct ssb_bus
  598. sprom_extract_r8(out, in);
  599. break;
  600. default:
  601. - ssb_printk(KERN_WARNING PFX "Unsupported SPROM"
  602. - " revision %d detected. Will extract"
  603. - " v1\n", out->revision);
  604. + ssb_warn("Unsupported SPROM revision %d detected. Will extract v1\n",
  605. + out->revision);
  606. out->revision = 1;
  607. sprom_extract_r123(out, in);
  608. }
  609. @@ -791,7 +800,7 @@ static int ssb_pci_sprom_get(struct ssb_
  610. u16 *buf;
  611. if (!ssb_is_sprom_available(bus)) {
  612. - ssb_printk(KERN_ERR PFX "No SPROM available!\n");
  613. + ssb_err("No SPROM available!\n");
  614. return -ENODEV;
  615. }
  616. if (bus->chipco.dev) { /* can be unavailable! */
  617. @@ -810,7 +819,7 @@ static int ssb_pci_sprom_get(struct ssb_
  618. } else {
  619. bus->sprom_offset = SSB_SPROM_BASE1;
  620. }
  621. - ssb_dprintk(KERN_INFO PFX "SPROM offset is 0x%x\n", bus->sprom_offset);
  622. + ssb_dbg("SPROM offset is 0x%x\n", bus->sprom_offset);
  623. buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
  624. if (!buf)
  625. @@ -835,18 +844,15 @@ static int ssb_pci_sprom_get(struct ssb_
  626. * available for this device in some other storage */
  627. err = ssb_fill_sprom_with_fallback(bus, sprom);
  628. if (err) {
  629. - ssb_printk(KERN_WARNING PFX "WARNING: Using"
  630. - " fallback SPROM failed (err %d)\n",
  631. - err);
  632. + ssb_warn("WARNING: Using fallback SPROM failed (err %d)\n",
  633. + err);
  634. } else {
  635. - ssb_dprintk(KERN_DEBUG PFX "Using SPROM"
  636. - " revision %d provided by"
  637. - " platform.\n", sprom->revision);
  638. + ssb_dbg("Using SPROM revision %d provided by platform\n",
  639. + sprom->revision);
  640. err = 0;
  641. goto out_free;
  642. }
  643. - ssb_printk(KERN_WARNING PFX "WARNING: Invalid"
  644. - " SPROM CRC (corrupt SPROM)\n");
  645. + ssb_warn("WARNING: Invalid SPROM CRC (corrupt SPROM)\n");
  646. }
  647. }
  648. err = sprom_extract(bus, sprom, buf, bus->sprom_size);
  649. --- a/drivers/ssb/pcmcia.c
  650. +++ b/drivers/ssb/pcmcia.c
  651. @@ -143,7 +143,7 @@ int ssb_pcmcia_switch_coreidx(struct ssb
  652. return 0;
  653. error:
  654. - ssb_printk(KERN_ERR PFX "Failed to switch to core %u\n", coreidx);
  655. + ssb_err("Failed to switch to core %u\n", coreidx);
  656. return err;
  657. }
  658. @@ -153,10 +153,9 @@ int ssb_pcmcia_switch_core(struct ssb_bu
  659. int err;
  660. #if SSB_VERBOSE_PCMCIACORESWITCH_DEBUG
  661. - ssb_printk(KERN_INFO PFX
  662. - "Switching to %s core, index %d\n",
  663. - ssb_core_name(dev->id.coreid),
  664. - dev->core_index);
  665. + ssb_info("Switching to %s core, index %d\n",
  666. + ssb_core_name(dev->id.coreid),
  667. + dev->core_index);
  668. #endif
  669. err = ssb_pcmcia_switch_coreidx(bus, dev->core_index);
  670. @@ -192,7 +191,7 @@ int ssb_pcmcia_switch_segment(struct ssb
  671. return 0;
  672. error:
  673. - ssb_printk(KERN_ERR PFX "Failed to switch pcmcia segment\n");
  674. + ssb_err("Failed to switch pcmcia segment\n");
  675. return err;
  676. }
  677. @@ -549,44 +548,39 @@ static int ssb_pcmcia_sprom_write_all(st
  678. bool failed = 0;
  679. size_t size = SSB_PCMCIA_SPROM_SIZE;
  680. - ssb_printk(KERN_NOTICE PFX
  681. - "Writing SPROM. Do NOT turn off the power! "
  682. - "Please stand by...\n");
  683. + ssb_notice("Writing SPROM. Do NOT turn off the power! Please stand by...\n");
  684. err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEEN);
  685. if (err) {
  686. - ssb_printk(KERN_NOTICE PFX
  687. - "Could not enable SPROM write access.\n");
  688. + ssb_notice("Could not enable SPROM write access\n");
  689. return -EBUSY;
  690. }
  691. - ssb_printk(KERN_NOTICE PFX "[ 0%%");
  692. + ssb_notice("[ 0%%");
  693. msleep(500);
  694. for (i = 0; i < size; i++) {
  695. if (i == size / 4)
  696. - ssb_printk("25%%");
  697. + ssb_cont("25%%");
  698. else if (i == size / 2)
  699. - ssb_printk("50%%");
  700. + ssb_cont("50%%");
  701. else if (i == (size * 3) / 4)
  702. - ssb_printk("75%%");
  703. + ssb_cont("75%%");
  704. else if (i % 2)
  705. - ssb_printk(".");
  706. + ssb_cont(".");
  707. err = ssb_pcmcia_sprom_write(bus, i, sprom[i]);
  708. if (err) {
  709. - ssb_printk(KERN_NOTICE PFX
  710. - "Failed to write to SPROM.\n");
  711. + ssb_notice("Failed to write to SPROM\n");
  712. failed = 1;
  713. break;
  714. }
  715. }
  716. err = ssb_pcmcia_sprom_command(bus, SSB_PCMCIA_SPROMCTL_WRITEDIS);
  717. if (err) {
  718. - ssb_printk(KERN_NOTICE PFX
  719. - "Could not disable SPROM write access.\n");
  720. + ssb_notice("Could not disable SPROM write access\n");
  721. failed = 1;
  722. }
  723. msleep(500);
  724. if (!failed) {
  725. - ssb_printk("100%% ]\n");
  726. - ssb_printk(KERN_NOTICE PFX "SPROM written.\n");
  727. + ssb_cont("100%% ]\n");
  728. + ssb_notice("SPROM written\n");
  729. }
  730. return failed ? -EBUSY : 0;
  731. @@ -700,7 +694,7 @@ static int ssb_pcmcia_do_get_invariants(
  732. return -ENOSPC; /* continue with next entry */
  733. error:
  734. - ssb_printk(KERN_ERR PFX
  735. + ssb_err(
  736. "PCMCIA: Failed to fetch device invariants: %s\n",
  737. error_description);
  738. return -ENODEV;
  739. @@ -722,7 +716,7 @@ int ssb_pcmcia_get_invariants(struct ssb
  740. res = pcmcia_loop_tuple(bus->host_pcmcia, CISTPL_FUNCE,
  741. ssb_pcmcia_get_mac, sprom);
  742. if (res != 0) {
  743. - ssb_printk(KERN_ERR PFX
  744. + ssb_err(
  745. "PCMCIA: Failed to fetch MAC address\n");
  746. return -ENODEV;
  747. }
  748. @@ -733,7 +727,7 @@ int ssb_pcmcia_get_invariants(struct ssb
  749. if ((res == 0) || (res == -ENOSPC))
  750. return 0;
  751. - ssb_printk(KERN_ERR PFX
  752. + ssb_err(
  753. "PCMCIA: Failed to fetch device invariants\n");
  754. return -ENODEV;
  755. }
  756. @@ -843,6 +837,6 @@ int ssb_pcmcia_init(struct ssb_bus *bus)
  757. return 0;
  758. error:
  759. - ssb_printk(KERN_ERR PFX "Failed to initialize PCMCIA host device\n");
  760. + ssb_err("Failed to initialize PCMCIA host device\n");
  761. return err;
  762. }
  763. --- a/drivers/ssb/scan.c
  764. +++ b/drivers/ssb/scan.c
  765. @@ -125,8 +125,7 @@ static u16 pcidev_to_chipid(struct pci_d
  766. chipid_fallback = 0x4401;
  767. break;
  768. default:
  769. - ssb_printk(KERN_ERR PFX
  770. - "PCI-ID not in fallback list\n");
  771. + ssb_err("PCI-ID not in fallback list\n");
  772. }
  773. return chipid_fallback;
  774. @@ -152,8 +151,7 @@ static u8 chipid_to_nrcores(u16 chipid)
  775. case 0x4704:
  776. return 9;
  777. default:
  778. - ssb_printk(KERN_ERR PFX
  779. - "CHIPID not in nrcores fallback list\n");
  780. + ssb_err("CHIPID not in nrcores fallback list\n");
  781. }
  782. return 1;
  783. @@ -320,15 +318,13 @@ int ssb_bus_scan(struct ssb_bus *bus,
  784. bus->chip_package = 0;
  785. }
  786. }
  787. - ssb_printk(KERN_INFO PFX "Found chip with id 0x%04X, rev 0x%02X and "
  788. - "package 0x%02X\n", bus->chip_id, bus->chip_rev,
  789. - bus->chip_package);
  790. + ssb_info("Found chip with id 0x%04X, rev 0x%02X and package 0x%02X\n",
  791. + bus->chip_id, bus->chip_rev, bus->chip_package);
  792. if (!bus->nr_devices)
  793. bus->nr_devices = chipid_to_nrcores(bus->chip_id);
  794. if (bus->nr_devices > ARRAY_SIZE(bus->devices)) {
  795. - ssb_printk(KERN_ERR PFX
  796. - "More than %d ssb cores found (%d)\n",
  797. - SSB_MAX_NR_CORES, bus->nr_devices);
  798. + ssb_err("More than %d ssb cores found (%d)\n",
  799. + SSB_MAX_NR_CORES, bus->nr_devices);
  800. goto err_unmap;
  801. }
  802. if (bus->bustype == SSB_BUSTYPE_SSB) {
  803. @@ -370,8 +366,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
  804. nr_80211_cores++;
  805. if (nr_80211_cores > 1) {
  806. if (!we_support_multiple_80211_cores(bus)) {
  807. - ssb_dprintk(KERN_INFO PFX "Ignoring additional "
  808. - "802.11 core\n");
  809. + ssb_dbg("Ignoring additional 802.11 core\n");
  810. continue;
  811. }
  812. }
  813. @@ -379,8 +374,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
  814. case SSB_DEV_EXTIF:
  815. #ifdef CONFIG_SSB_DRIVER_EXTIF
  816. if (bus->extif.dev) {
  817. - ssb_printk(KERN_WARNING PFX
  818. - "WARNING: Multiple EXTIFs found\n");
  819. + ssb_warn("WARNING: Multiple EXTIFs found\n");
  820. break;
  821. }
  822. bus->extif.dev = dev;
  823. @@ -388,8 +382,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
  824. break;
  825. case SSB_DEV_CHIPCOMMON:
  826. if (bus->chipco.dev) {
  827. - ssb_printk(KERN_WARNING PFX
  828. - "WARNING: Multiple ChipCommon found\n");
  829. + ssb_warn("WARNING: Multiple ChipCommon found\n");
  830. break;
  831. }
  832. bus->chipco.dev = dev;
  833. @@ -398,8 +391,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
  834. case SSB_DEV_MIPS_3302:
  835. #ifdef CONFIG_SSB_DRIVER_MIPS
  836. if (bus->mipscore.dev) {
  837. - ssb_printk(KERN_WARNING PFX
  838. - "WARNING: Multiple MIPS cores found\n");
  839. + ssb_warn("WARNING: Multiple MIPS cores found\n");
  840. break;
  841. }
  842. bus->mipscore.dev = dev;
  843. @@ -420,8 +412,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
  844. }
  845. }
  846. if (bus->pcicore.dev) {
  847. - ssb_printk(KERN_WARNING PFX
  848. - "WARNING: Multiple PCI(E) cores found\n");
  849. + ssb_warn("WARNING: Multiple PCI(E) cores found\n");
  850. break;
  851. }
  852. bus->pcicore.dev = dev;
  853. --- a/drivers/ssb/sprom.c
  854. +++ b/drivers/ssb/sprom.c
  855. @@ -127,13 +127,13 @@ ssize_t ssb_attr_sprom_store(struct ssb_
  856. goto out_kfree;
  857. err = ssb_devices_freeze(bus, &freeze);
  858. if (err) {
  859. - ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze all devices\n");
  860. + ssb_err("SPROM write: Could not freeze all devices\n");
  861. goto out_unlock;
  862. }
  863. res = sprom_write(bus, sprom);
  864. err = ssb_devices_thaw(&freeze);
  865. if (err)
  866. - ssb_printk(KERN_ERR PFX "SPROM write: Could not thaw all devices\n");
  867. + ssb_err("SPROM write: Could not thaw all devices\n");
  868. out_unlock:
  869. mutex_unlock(&bus->sprom_mutex);
  870. out_kfree:
  871. --- a/drivers/ssb/ssb_private.h
  872. +++ b/drivers/ssb/ssb_private.h
  873. @@ -9,16 +9,27 @@
  874. #define PFX "ssb: "
  875. #ifdef CONFIG_SSB_SILENT
  876. -# define ssb_printk(fmt, x...) do { /* nothing */ } while (0)
  877. +# define ssb_printk(fmt, ...) \
  878. + do { if (0) printk(fmt, ##__VA_ARGS__); } while (0)
  879. #else
  880. -# define ssb_printk printk
  881. +# define ssb_printk(fmt, ...) \
  882. + printk(fmt, ##__VA_ARGS__)
  883. #endif /* CONFIG_SSB_SILENT */
  884. +#define ssb_emerg(fmt, ...) ssb_printk(KERN_EMERG PFX fmt, ##__VA_ARGS__)
  885. +#define ssb_err(fmt, ...) ssb_printk(KERN_ERR PFX fmt, ##__VA_ARGS__)
  886. +#define ssb_warn(fmt, ...) ssb_printk(KERN_WARNING PFX fmt, ##__VA_ARGS__)
  887. +#define ssb_notice(fmt, ...) ssb_printk(KERN_NOTICE PFX fmt, ##__VA_ARGS__)
  888. +#define ssb_info(fmt, ...) ssb_printk(KERN_INFO PFX fmt, ##__VA_ARGS__)
  889. +#define ssb_cont(fmt, ...) ssb_printk(KERN_CONT fmt, ##__VA_ARGS__)
  890. +
  891. /* dprintk: Debugging printk; vanishes for non-debug compilation */
  892. #ifdef CONFIG_SSB_DEBUG
  893. -# define ssb_dprintk(fmt, x...) ssb_printk(fmt , ##x)
  894. +# define ssb_dbg(fmt, ...) \
  895. + ssb_printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__)
  896. #else
  897. -# define ssb_dprintk(fmt, x...) do { /* nothing */ } while (0)
  898. +# define ssb_dbg(fmt, ...) \
  899. + do { if (0) printk(KERN_DEBUG PFX fmt, ##__VA_ARGS__); } while (0)
  900. #endif
  901. #ifdef CONFIG_SSB_DEBUG
  902. --- a/include/linux/ssb/ssb.h
  903. +++ b/include/linux/ssb/ssb.h
  904. @@ -26,9 +26,9 @@ struct ssb_sprom_core_pwr_info {
  905. struct ssb_sprom {
  906. u8 revision;
  907. - u8 il0mac[6]; /* MAC address for 802.11b/g */
  908. - u8 et0mac[6]; /* MAC address for Ethernet */
  909. - u8 et1mac[6]; /* MAC address for 802.11a */
  910. + u8 il0mac[6] __aligned(sizeof(u16)); /* MAC address for 802.11b/g */
  911. + u8 et0mac[6] __aligned(sizeof(u16)); /* MAC address for Ethernet */
  912. + u8 et1mac[6] __aligned(sizeof(u16)); /* MAC address for 802.11a */
  913. u8 et0phyaddr; /* MII address for enet0 */
  914. u8 et1phyaddr; /* MII address for enet1 */
  915. u8 et0mdcport; /* MDIO for enet0 */
  916. @@ -340,13 +340,61 @@ enum ssb_bustype {
  917. #define SSB_BOARDVENDOR_DELL 0x1028 /* Dell */
  918. #define SSB_BOARDVENDOR_HP 0x0E11 /* HP */
  919. /* board_type */
  920. +#define SSB_BOARD_BCM94301CB 0x0406
  921. +#define SSB_BOARD_BCM94301MP 0x0407
  922. +#define SSB_BOARD_BU4309 0x040A
  923. +#define SSB_BOARD_BCM94309CB 0x040B
  924. +#define SSB_BOARD_BCM4309MP 0x040C
  925. +#define SSB_BOARD_BU4306 0x0416
  926. #define SSB_BOARD_BCM94306MP 0x0418
  927. #define SSB_BOARD_BCM4309G 0x0421
  928. #define SSB_BOARD_BCM4306CB 0x0417
  929. -#define SSB_BOARD_BCM4309MP 0x040C
  930. +#define SSB_BOARD_BCM94306PC 0x0425 /* pcmcia 3.3v 4306 card */
  931. +#define SSB_BOARD_BCM94306CBSG 0x042B /* with SiGe PA */
  932. +#define SSB_BOARD_PCSG94306 0x042D /* with SiGe PA */
  933. +#define SSB_BOARD_BU4704SD 0x042E /* with sdram */
  934. +#define SSB_BOARD_BCM94704AGR 0x042F /* dual 11a/11g Router */
  935. +#define SSB_BOARD_BCM94308MP 0x0430 /* 11a-only minipci */
  936. +#define SSB_BOARD_BU4318 0x0447
  937. +#define SSB_BOARD_CB4318 0x0448
  938. +#define SSB_BOARD_MPG4318 0x0449
  939. #define SSB_BOARD_MP4318 0x044A
  940. -#define SSB_BOARD_BU4306 0x0416
  941. -#define SSB_BOARD_BU4309 0x040A
  942. +#define SSB_BOARD_SD4318 0x044B
  943. +#define SSB_BOARD_BCM94306P 0x044C /* with SiGe */
  944. +#define SSB_BOARD_BCM94303MP 0x044E
  945. +#define SSB_BOARD_BCM94306MPM 0x0450
  946. +#define SSB_BOARD_BCM94306MPL 0x0453
  947. +#define SSB_BOARD_PC4303 0x0454 /* pcmcia */
  948. +#define SSB_BOARD_BCM94306MPLNA 0x0457
  949. +#define SSB_BOARD_BCM94306MPH 0x045B
  950. +#define SSB_BOARD_BCM94306PCIV 0x045C
  951. +#define SSB_BOARD_BCM94318MPGH 0x0463
  952. +#define SSB_BOARD_BU4311 0x0464
  953. +#define SSB_BOARD_BCM94311MC 0x0465
  954. +#define SSB_BOARD_BCM94311MCAG 0x0466
  955. +/* 4321 boards */
  956. +#define SSB_BOARD_BU4321 0x046B
  957. +#define SSB_BOARD_BU4321E 0x047C
  958. +#define SSB_BOARD_MP4321 0x046C
  959. +#define SSB_BOARD_CB2_4321 0x046D
  960. +#define SSB_BOARD_CB2_4321_AG 0x0066
  961. +#define SSB_BOARD_MC4321 0x046E
  962. +/* 4325 boards */
  963. +#define SSB_BOARD_BCM94325DEVBU 0x0490
  964. +#define SSB_BOARD_BCM94325BGABU 0x0491
  965. +#define SSB_BOARD_BCM94325SDGWB 0x0492
  966. +#define SSB_BOARD_BCM94325SDGMDL 0x04AA
  967. +#define SSB_BOARD_BCM94325SDGMDL2 0x04C6
  968. +#define SSB_BOARD_BCM94325SDGMDL3 0x04C9
  969. +#define SSB_BOARD_BCM94325SDABGWBA 0x04E1
  970. +/* 4322 boards */
  971. +#define SSB_BOARD_BCM94322MC 0x04A4
  972. +#define SSB_BOARD_BCM94322USB 0x04A8 /* dualband */
  973. +#define SSB_BOARD_BCM94322HM 0x04B0
  974. +#define SSB_BOARD_BCM94322USB2D 0x04Bf /* single band discrete front end */
  975. +/* 4312 boards */
  976. +#define SSB_BOARD_BU4312 0x048A
  977. +#define SSB_BOARD_BCM4312MCGSG 0x04B5
  978. /* chip_package */
  979. #define SSB_CHIPPACK_BCM4712S 1 /* Small 200pin 4712 */
  980. #define SSB_CHIPPACK_BCM4712M 2 /* Medium 225pin 4712 */
  981. --- a/include/linux/ssb/ssb_regs.h
  982. +++ b/include/linux/ssb/ssb_regs.h
  983. @@ -289,11 +289,11 @@
  984. #define SSB_SPROM4_ETHPHY_ET1A_SHIFT 5
  985. #define SSB_SPROM4_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */
  986. #define SSB_SPROM4_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */
  987. -#define SSB_SPROM4_ANTAVAIL 0x005D /* Antenna available bitfields */
  988. -#define SSB_SPROM4_ANTAVAIL_A 0x00FF /* A-PHY bitfield */
  989. -#define SSB_SPROM4_ANTAVAIL_A_SHIFT 0
  990. -#define SSB_SPROM4_ANTAVAIL_BG 0xFF00 /* B-PHY and G-PHY bitfield */
  991. -#define SSB_SPROM4_ANTAVAIL_BG_SHIFT 8
  992. +#define SSB_SPROM4_ANTAVAIL 0x005C /* Antenna available bitfields */
  993. +#define SSB_SPROM4_ANTAVAIL_BG 0x00FF /* B-PHY and G-PHY bitfield */
  994. +#define SSB_SPROM4_ANTAVAIL_BG_SHIFT 0
  995. +#define SSB_SPROM4_ANTAVAIL_A 0xFF00 /* A-PHY bitfield */
  996. +#define SSB_SPROM4_ANTAVAIL_A_SHIFT 8
  997. #define SSB_SPROM4_AGAIN01 0x005E /* Antenna Gain (in dBm Q5.2) */
  998. #define SSB_SPROM4_AGAIN0 0x00FF /* Antenna 0 */
  999. #define SSB_SPROM4_AGAIN0_SHIFT 0