kernel: refresh patches
[openwrt/svn-archive/archive.git] / target / linux / generic / patches-3.8 / 020-ssb_update.patch
index 22dae59498d4d254402338ad216e2c15fd0ff70f..7baa17d447073b7c7d03ea73b8601dd757b8b26b 100644 (file)
@@ -6,7 +6,7 @@
  
 +config SSB_SFLASH
 +      bool "SSB serial flash support"
-+      depends on SSB_DRIVER_MIPS && BROKEN
++      depends on SSB_DRIVER_MIPS
 +      default y
 +
  # Assumption: We are on embedded, if we compile the MIPS core.
                           "Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n",
 --- /dev/null
 +++ b/drivers/ssb/driver_chipcommon_sflash.c
-@@ -0,0 +1,166 @@
+@@ -0,0 +1,164 @@
 +/*
 + * Sonics Silicon Backplane
 + * ChipCommon serial flash interface
 +      sflash->size = sflash->blocksize * sflash->numblocks;
 +      sflash->present = true;
 +
-+      pr_info("Found %s serial flash (blocksize: 0x%X, blocks: %d)\n",
-+              e->name, e->blocksize, e->numblocks);
++      pr_info("Found %s serial flash (size: %dKiB, blocksize: 0x%X, blocks: %d)\n",
++              e->name, sflash->size / 1024, e->blocksize, e->numblocks);
 +
 +      /* Prepare platform device, but don't register it yet. It's too early,
 +       * malloc (required by device_private_init) is not available yet. */
 +                                       sflash->size;
 +      ssb_sflash_dev.dev.platform_data = sflash;
 +
-+      pr_err("Serial flash support is not implemented yet!\n");
-+
-+      return -ENOTSUPP;
++      return 0;
 +}
 --- a/drivers/ssb/driver_gpio.c
 +++ b/drivers/ssb/driver_gpio.c
  extern u32 ssb_extif_watchdog_timer_set_ms(struct bcm47xx_wdt *wdt, u32 ms);
 --- a/include/linux/ssb/ssb.h
 +++ b/include/linux/ssb/ssb.h
-@@ -26,9 +26,9 @@ struct ssb_sprom_core_pwr_info {
+@@ -26,13 +26,14 @@ struct ssb_sprom_core_pwr_info {
  
  struct ssb_sprom {
        u8 revision;
        u8 et0phyaddr;          /* MII address for enet0 */
        u8 et1phyaddr;          /* MII address for enet1 */
        u8 et0mdcport;          /* MDIO for enet0 */
-@@ -340,13 +340,61 @@ enum ssb_bustype {
+       u8 et1mdcport;          /* MDIO for enet1 */
++      u16 dev_id;             /* Device ID overriding e.g. PCI ID */
+       u16 board_rev;          /* Board revision number from SPROM. */
+       u16 board_num;          /* Board number from SPROM. */
+       u16 board_type;         /* Board type from SPROM. */
+@@ -340,13 +341,61 @@ enum ssb_bustype {
  #define SSB_BOARDVENDOR_DELL  0x1028  /* Dell */
  #define SSB_BOARDVENDOR_HP    0x0E11  /* HP */
  /* board_type */
  #define SSB_SPROM4_AGAIN01            0x005E  /* Antenna Gain (in dBm Q5.2) */
  #define  SSB_SPROM4_AGAIN0            0x00FF  /* Antenna 0 */
  #define  SSB_SPROM4_AGAIN0_SHIFT      0
+--- a/arch/mips/bcm47xx/sprom.c
++++ b/arch/mips/bcm47xx/sprom.c
+@@ -168,6 +168,7 @@ static void nvram_read_alpha2(const char
+ static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom,
+                                       const char *prefix, bool fallback)
+ {
++      nvram_read_u16(prefix, NULL, "devid", &sprom->dev_id, 0, fallback);
+       nvram_read_u8(prefix, NULL, "ledbh0", &sprom->gpio0, 0xff, fallback);
+       nvram_read_u8(prefix, NULL, "ledbh1", &sprom->gpio1, 0xff, fallback);
+       nvram_read_u8(prefix, NULL, "ledbh2", &sprom->gpio2, 0xff, fallback);