Skip to contentSkip to conversation

Merge the Sonics Silicon Backplane subsystem

PATCH In review Michael Buesch 3 participants 6 messages Jul 29, 2007 – Aug 1, 2007

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Merge the Sonics Silicon Backplane subsystem

The Sonics Silicon Backplane is a mini-bus used on various Broadcom chips and embedded devices.
Devices using the SSB include b44, bcm43xx and various Broadcom based wireless routers.
A b44 and bcm43xx port and a SSB based OHCI driver is available.

--

Andrew, please put this patch into -mm.
This is the final patch to merge ssb, which means future cleanups and fixes will come incremental based on this one.

Please also schedule this patch for merge into mainline when the next merge window opens. I'll also send out a remind mail when that happens.

Please also leave the patch avoid-ssb-compililation-on-s390.patch
in -mm and also push that to mainline when the merge window opens.

drivers/Makefile +1 -0
index a9e4c5f..2b079ed 100644
@@ -87,3 +87,4 @@ obj-$(CONFIG_DMA_ENGINE)	+= dma/
 obj-$(CONFIG_HID)		+= hid/
 obj-$(CONFIG_PPC_PS3)		+= ps3/
 obj-$(CONFIG_OF)		+= of/
+obj-$(CONFIG_SSB)		+= ssb/
drivers/Kconfig +2 -0
index 3e1c442..7bdae47 100644
@@ -58,6 +58,8 @@ source "drivers/power/Kconfig"
 
 source "drivers/hwmon/Kconfig"
 
+source "drivers/ssb/Kconfig"
+
 source "drivers/mfd/Kconfig"
 
 source "drivers/media/Kconfig"
drivers/ssb/Makefile new file +13 -0
new file mode 100644
index 0000000..045aff0
@@ -0,0 +1,13 @@
+# core
+ssb-y					+= main.o scan.o
+
+# host support
+ssb-$(CONFIG_SSB_PCIHOST)		+= pci.o pcihost_wrapper.o
+ssb-$(CONFIG_SSB_PCMCIAHOST)		+= pcmcia.o
+
+# built-in drivers
+ssb-y					+= driver_chipcommon.o
+ssb-$(CONFIG_SSB_DRIVER_MIPS)		+= driver_mipscore.o
+ssb-$(CONFIG_SSB_DRIVER_PCICORE)	+= driver_pcicore.o
+
+obj-$(CONFIG_SSB)			+= ssb.o
drivers/ssb/Kconfig new file +92 -0

92 lines not on this page · raw message

drivers/ssb/driver_chipcommon.c new file +394 -0

394 lines not on this page · raw message

drivers/ssb/driver_mipscore.c new file +258 -0

258 lines not on this page · raw message

drivers/ssb/driver_pcicore.c new file +568 -0

568 lines not on this page · raw message

drivers/ssb/main.c new file +1112 -0

1,112 lines not on this page · raw message

drivers/ssb/pci.c new file +704 -0

551 lines not on this page · raw message

drivers/ssb/pcihost_wrapper.c new file +104 -0

104 lines not on this page · raw message

drivers/ssb/pcmcia.c new file +265 -0

265 lines not on this page · raw message

drivers/ssb/scan.c new file +413 -0

413 lines not on this page · raw message

drivers/ssb/ssb_private.h new file +122 -0

122 lines not on this page · raw message

include/linux/ssb/ssb_driver_chipcommon.h new file +385 -0

385 lines not on this page · raw message

include/linux/ssb/ssb_driver_extif.h new file +160 -0

160 lines not on this page · raw message

include/linux/ssb/ssb_driver_mips.h new file +44 -0

44 lines not on this page · raw message

include/linux/ssb/ssb_driver_pci.h new file +106 -0

106 lines not on this page · raw message

include/linux/ssb/ssb.h new file +432 -0

432 lines not on this page · raw message

include/linux/ssb/ssb_regs.h new file +292 -0

292 lines not on this page · raw message

MAINTAINERS +6 -0
index 845fbf4..aee5182 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#1 lore raw
Quoted 2 lines · On Sun, 29 Jul 2007 13:24:54 +0200 Michael Buesch <[email protected]> wrote:

The Sonics Silicon Backplane is a mini-bus used on various Broadcom chips and embedded devices.

Sigh.

s390:

drivers/ssb/main.c: In function 'ssb_ssb_read16':
drivers/ssb/main.c:489: error: implicit declaration of function 'readw' drivers/ssb/main.c: In function 'ssb_ssb_read32':
drivers/ssb/main.c:497: error: implicit declaration of function 'readl' drivers/ssb/main.c: In function 'ssb_ssb_write16':
drivers/ssb/main.c:505: error: implicit declaration of function 'writew' drivers/ssb/main.c: In function 'ssb_ssb_write32':
drivers/ssb/main.c:513: error: implicit declaration of function 'writel'

we shouldn't be compiling SSB on s390, because:

config SSB
tristate "Sonics Silicon Backplane support" depends on EXPERIMENTAL && HAS_IOMEM

and

akpm2:/usr/src/25> grep IOMEM .config
CONFIG_NO_IOMEM=y
akpm2:/usr/src/25>

but

akpm2:/usr/src/25> grep SSB .config
CONFIG_DCSSBLK=m
CONFIG_SSB=m
CONFIG_SSB_SILENT=y

well, how did that come about?

It _has_ to be select'. It's _always_ select'.

yup, it's `select':

Selected by: B44 && NETDEVICES && NET_ETHERNET || BCM43XX_MAC80211 && NETDEVICES && !S390 && MAC80211 && WLAN_80211 && EXPERIMENTAL

Look. Kconfig's `select' Just. Does. Not. Work. If you find yourself contemplating using it, please, don sackcloth, take a cold shower and several analgesics, then have another go, OK?

ho hum.

#2 lore raw
Quoted 43 lines · Andrew Morton
Quoted 2 lines · On Sun, 29 Jul 2007 13:24:54 +0200 Michael Buesch…

The Sonics Silicon Backplane is a mini-bus used on various Broadcom chips and embedded devices.

Sigh.

s390:

drivers/ssb/main.c: In function 'ssb_ssb_read16':
drivers/ssb/main.c:489: error: implicit declaration of function 'readw' drivers/ssb/main.c: In function 'ssb_ssb_read32':
drivers/ssb/main.c:497: error: implicit declaration of function 'readl' drivers/ssb/main.c: In function 'ssb_ssb_write16':
drivers/ssb/main.c:505: error: implicit declaration of function 'writew' drivers/ssb/main.c: In function 'ssb_ssb_write32':
drivers/ssb/main.c:513: error: implicit declaration of function 'writel'

we shouldn't be compiling SSB on s390, because:

config SSB
tristate "Sonics Silicon Backplane support" depends on EXPERIMENTAL && HAS_IOMEM

and

akpm2:/usr/src/25> grep IOMEM .config
CONFIG_NO_IOMEM=y
akpm2:/usr/src/25>

but

akpm2:/usr/src/25> grep SSB .config
CONFIG_DCSSBLK=m
CONFIG_SSB=m
CONFIG_SSB_SILENT=y

well, how did that come about?

It _has_ to be select'. It's _always_ select'.

yup, it's `select':

Quoted 8 lines

Selected by: B44 && NETDEVICES && NET_ETHERNET || BCM43XX_MAC80211 && NETDEVICES && !S390 && MAC80211 && WLAN_80211 && EXPERIMENTAL

Look. Kconfig's `select' Just. Does. Not. Work. If you find yourself contemplating using it, please, don sackcloth, take a cold shower and several analgesics, then have another go, OK?

ho hum.

Ah, yeah. Crap select not caring about dependencies... The problem is that people will kill me, if they don't find bcm43xx in the kconfig anymore, as they have to enable ssb before that. Ya know the flame with Uwe Bugla going crazy about that? :D
Same goes for b44. It was always there in kconfig without additional deps, but now (when we merge the b44 port) we would need ssb selected before we see b44.
Maybe default SSB to M?

#3 lore raw
Quoted 12 lines · On Wed, 1 Aug 2007 11:33:36 +0200 Michael Buesch…
Quoted 11 lines

yup, it's `select':

Selected by: B44 && NETDEVICES && NET_ETHERNET || BCM43XX_MAC80211 && NETDEVICES && !S390 && MAC80211 && WLAN_80211 && EXPERIMENTAL

Look. Kconfig's `select' Just. Does. Not. Work. If you find yourself contemplating using it, please, don sackcloth, take a cold shower and several analgesics, then have another go, OK?

ho hum.

Quoted 8 lines

Ah, yeah. Crap select not caring about dependencies... The problem is that people will kill me, if they don't find bcm43xx in the kconfig anymore, as they have to enable ssb before that. Ya know the flame with Uwe Bugla going crazy about that? :D
Same goes for b44. It was always there in kconfig without additional deps, but now (when we merge the b44 port) we would need ssb selected before we see b44.

We just don't have a good solution to this.

`select' is bust and it's unobvious how it can _not_ be bust. If you're selecting something whose dependencies aren't met, what can we do? Maybe select the thing it depends on as well? What if it depends on (A||B)? Which one do we force on? Screwed.

And hiding options from the users until theyve gone elsewher and selected something else is most user-hostile.

At least we have menuconfig's "/" command, so if you know the option's name you can work out why it isn't appearing.

I think what we should do is to continue to offer the unselectable option in manuconfig and friends, only "greyed out" in some fashion. So the user can still navigate to it and select the "what do you depend on" button.

Quoted 1 line

Maybe default SSB to M?

People would complain about that too. I don't know what to do, sorry. Muddle through :(

#4 lore raw
In reply to Andrew Morton
Quoted 3 lines · Andrew Morton

Look. Kconfig's `select' Just. Does. Not. Work. If you find yourself contemplating using it, please, don sackcloth, take a cold shower and several analgesics, then have another go, OK?

Amen.

Signature · 1 line
dwmw2
#5 lore raw
In reply to Michael Buesch
Quoted 2 lines · On Sun, 29 Jul 2007 13:24:54 +0200 Michael Buesch…

The Sonics Silicon Backplane is a mini-bus used on various Broadcom chips and embedded devices.

A few probs with mips allmodconfig:

drivers/ssb/driver_mipscore.c:121: warning: "struct ssb_serial_ports" declared inside parameter list drivers/ssb/driver_mipscore.c:121: warning: its scope is only this definition or declaration, which is probably not what you want drivers/ssb/driver_mipscore.c: In function `ssb_mips_serial_init':
drivers/ssb/driver_mipscore.c:166: warning: passing arg 1 of ssb_extif_serial_init' from incompatible pointer type drivers/ssb/driver_mipscore.c:166: warning: passing arg 2 of ssb_extif_serial_init' from incompatible pointer type drivers/ssb/driver_mipscore.c: At top level:
drivers/ssb/driver_mipscore.c:188: warning: 'ssb_cpu_clock' defined but not used drivers/ssb/driver_pcicore.c: In function `ssb_fixup_pcibridge':
drivers/ssb/driver_pcicore.c:98: error: implicit declaration of function `pcibios_enable_device' drivers/ssb/driver_pcicore.c: At top level:
drivers/ssb/driver_pcicore.c:278: warning: integer overflow in expression
drivers/ssb/driver_pcicore.c:278: warning: integer overflow in expression

the latter is due to .end in

static struct resource ssb_pcicore_mem_resource = {

        .name   = "SSB PCIcore external memory",
        .start  = SSB_PCI_DMA,
        .end    = SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
        .flags  = IORESOURCE_MEM,

};

It could be more Kconfig select borkage, of course..