[kernel] update to 2.6.25.12
[openwrt.git] / target / linux / generic-2.6 / patches-2.6.23 / 930-ssb_fixes.patch
1 This patch ports ssb to the 2.6.23 kernel.
2
3 --- a/drivers/ssb/driver_mipscore.c
4 +++ b/drivers/ssb/driver_mipscore.c
5 @@ -223,3 +223,5 @@
6         ssb_mips_serial_init(mcore);
7         ssb_mips_flash_detect(mcore);
8  }
9 +
10 +EXPORT_SYMBOL(ssb_mips_irq);
11 --- a/include/linux/mod_devicetable.h
12 +++ b/include/linux/mod_devicetable.h
13 @@ -352,4 +352,19 @@
14  #define PA_HVERSION_ANY_ID     0xffff
15  #define PA_SVERSION_ANY_ID     0xffffffff
16  
17 +/* SSB core, see drivers/ssb/ */
18 +struct ssb_device_id {
19 +       __u16   vendor;
20 +       __u16   coreid;
21 +       __u8    revision;
22 +};
23 +#define SSB_DEVICE(_vendor, _coreid, _revision)  \
24 +       { .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
25 +#define SSB_DEVTABLE_END  \
26 +       { 0, },
27 +
28 +#define SSB_ANY_VENDOR         0xFFFF
29 +#define SSB_ANY_ID             0xFFFF
30 +#define SSB_ANY_REV            0xFF
31 +
32  #endif /* LINUX_MOD_DEVICETABLE_H */
33 --- a/drivers/ssb/main.c
34 +++ b/drivers/ssb/main.c
35 @@ -321,14 +321,16 @@
36         return 0;
37  }
38  
39 -static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env)
40 +static int ssb_device_uevent(struct device *dev, char **envp,
41 +                            int num_envp, char *buffer, int buffer_size)
42  {
43         struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
44 +       int i = 0, len = 0;
45  
46         if (!dev)
47                 return -ENODEV;
48  
49 -       return add_uevent_var(env,
50 +       return add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
51                              "MODALIAS=ssb:v%04Xid%04Xrev%02X",
52                              ssb_dev->id.vendor, ssb_dev->id.coreid,
53                              ssb_dev->id.revision);
54 --- a/drivers/ssb/scan.c
55 +++ b/drivers/ssb/scan.c
56 @@ -391,12 +391,14 @@
57                         if (bus->bustype == SSB_BUSTYPE_PCI) {
58                                 /* Ignore PCI cores on PCI-E cards.
59                                  * Ignore PCI-E cores on PCI cards. */
60 +                               //FIXME kernel 2.6.23 doesn't have is_pcie. Add this check back when updating to 2.6.24 or later.
61                                 if (dev->id.coreid == SSB_DEV_PCI) {
62 -                                       if (bus->host_pci->is_pcie)
63 -                                               continue;
64 +//FIXME                                        if (bus->host_pci->is_pcie)
65 +//FIXME                                                continue;
66                                 } else {
67 -                                       if (!bus->host_pci->is_pcie)
68 -                                               continue;
69 +                                       continue; //FIXME
70 +//FIXME                                        if (!bus->host_pci->is_pcie)
71 +//FIXME                                                continue;
72                                 }
73                         }
74                         if (bus->pcicore.dev) {
75 --- a/drivers/ssb/driver_pcicore.c
76 +++ b/drivers/ssb/driver_pcicore.c
77 @@ -362,7 +362,7 @@
78             chipid_top != 0x5300)
79                 return 0;
80  
81 -       if (bus->sprom.r1.boardflags_lo & SSB_PCICORE_BFL_NOPCI)
82 +       if (bus->sprom.boardflags_lo & SSB_PCICORE_BFL_NOPCI)
83                 return 0;
84  
85         /* The 200-pin BCM4712 package does not bond out PCI. Even when