|
|
@@ -1574,7 +1574,7 @@
|
|
|
bcma_core_mips_print_irq(core, bcma_core_mips_irq(core));
|
|
|
}
|
|
|
}
|
|
|
-@@ -171,9 +194,9 @@ u32 bcma_cpu_clock(struct bcma_drv_mips
|
|
|
+@@ -171,9 +194,9 @@ u32 bcma_cpu_clock(struct bcma_drv_mips
|
|
|
struct bcma_bus *bus = mcore->core->bus;
|
|
|
|
|
|
if (bus->drv_cc.capabilities & BCMA_CC_CAP_PMU)
|
|
|
@@ -1932,7 +1932,7 @@
|
|
|
}
|
|
|
|
|
|
/**************************************************
|
|
|
-@@ -138,88 +143,108 @@ static void bcma_pcie_mdio_write(struct
|
|
|
+@@ -138,88 +143,108 @@ static void bcma_pcie_mdio_write(struct
|
|
|
|
|
|
static u8 bcma_pcicore_polarity_workaround(struct bcma_drv_pci *pc)
|
|
|
{
|
|
|
@@ -2790,7 +2790,7 @@
|
|
|
{
|
|
|
struct bcma_bus *bus = pci_get_drvdata(dev);
|
|
|
|
|
|
-@@ -234,7 +238,7 @@ static void bcma_host_pci_remove(struct
|
|
|
+@@ -234,7 +238,7 @@ static void bcma_host_pci_remove(struct
|
|
|
pci_set_drvdata(dev, NULL);
|
|
|
}
|
|
|
|
|
|
@@ -3231,12 +3231,12 @@
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return "UNKNOWN";
|
|
|
-+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < size; i++) {
|
|
|
+ if (names[i].id == id->id)
|
|
|
+ return names[i].name;
|
|
|
- }
|
|
|
++ }
|
|
|
+
|
|
|
return "UNKNOWN";
|
|
|
}
|
|
|
@@ -3620,7 +3620,71 @@
|
|
|
+ SPEX(core_pwr_info[i].pa_5gh[1], o + SSB_SROM8_5GH_PA_1, ~0, 0);
|
|
|
+ SPEX(core_pwr_info[i].pa_5gh[2], o + SSB_SROM8_5GH_PA_2, ~0, 0);
|
|
|
+ }
|
|
|
-+
|
|
|
+
|
|
|
+- bus->sprom.txpid2g[0] = (sprom[SPOFF(SSB_SPROM4_TXPID2G01)] &
|
|
|
+- SSB_SPROM4_TXPID2G0) >> SSB_SPROM4_TXPID2G0_SHIFT;
|
|
|
+- bus->sprom.txpid2g[1] = (sprom[SPOFF(SSB_SPROM4_TXPID2G01)] &
|
|
|
+- SSB_SPROM4_TXPID2G1) >> SSB_SPROM4_TXPID2G1_SHIFT;
|
|
|
+- bus->sprom.txpid2g[2] = (sprom[SPOFF(SSB_SPROM4_TXPID2G23)] &
|
|
|
+- SSB_SPROM4_TXPID2G2) >> SSB_SPROM4_TXPID2G2_SHIFT;
|
|
|
+- bus->sprom.txpid2g[3] = (sprom[SPOFF(SSB_SPROM4_TXPID2G23)] &
|
|
|
+- SSB_SPROM4_TXPID2G3) >> SSB_SPROM4_TXPID2G3_SHIFT;
|
|
|
+-
|
|
|
+- bus->sprom.txpid5gl[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL01)] &
|
|
|
+- SSB_SPROM4_TXPID5GL0) >> SSB_SPROM4_TXPID5GL0_SHIFT;
|
|
|
+- bus->sprom.txpid5gl[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL01)] &
|
|
|
+- SSB_SPROM4_TXPID5GL1) >> SSB_SPROM4_TXPID5GL1_SHIFT;
|
|
|
+- bus->sprom.txpid5gl[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL23)] &
|
|
|
+- SSB_SPROM4_TXPID5GL2) >> SSB_SPROM4_TXPID5GL2_SHIFT;
|
|
|
+- bus->sprom.txpid5gl[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL23)] &
|
|
|
+- SSB_SPROM4_TXPID5GL3) >> SSB_SPROM4_TXPID5GL3_SHIFT;
|
|
|
+-
|
|
|
+- bus->sprom.txpid5g[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5G01)] &
|
|
|
+- SSB_SPROM4_TXPID5G0) >> SSB_SPROM4_TXPID5G0_SHIFT;
|
|
|
+- bus->sprom.txpid5g[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5G01)] &
|
|
|
+- SSB_SPROM4_TXPID5G1) >> SSB_SPROM4_TXPID5G1_SHIFT;
|
|
|
+- bus->sprom.txpid5g[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5G23)] &
|
|
|
+- SSB_SPROM4_TXPID5G2) >> SSB_SPROM4_TXPID5G2_SHIFT;
|
|
|
+- bus->sprom.txpid5g[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5G23)] &
|
|
|
+- SSB_SPROM4_TXPID5G3) >> SSB_SPROM4_TXPID5G3_SHIFT;
|
|
|
+-
|
|
|
+- bus->sprom.txpid5gh[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH01)] &
|
|
|
+- SSB_SPROM4_TXPID5GH0) >> SSB_SPROM4_TXPID5GH0_SHIFT;
|
|
|
+- bus->sprom.txpid5gh[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH01)] &
|
|
|
+- SSB_SPROM4_TXPID5GH1) >> SSB_SPROM4_TXPID5GH1_SHIFT;
|
|
|
+- bus->sprom.txpid5gh[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH23)] &
|
|
|
+- SSB_SPROM4_TXPID5GH2) >> SSB_SPROM4_TXPID5GH2_SHIFT;
|
|
|
+- bus->sprom.txpid5gh[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH23)] &
|
|
|
+- SSB_SPROM4_TXPID5GH3) >> SSB_SPROM4_TXPID5GH3_SHIFT;
|
|
|
+-
|
|
|
+- bus->sprom.boardflags_lo = sprom[SPOFF(SSB_SPROM8_BFLLO)];
|
|
|
+- bus->sprom.boardflags_hi = sprom[SPOFF(SSB_SPROM8_BFLHI)];
|
|
|
+- bus->sprom.boardflags2_lo = sprom[SPOFF(SSB_SPROM8_BFL2LO)];
|
|
|
+- bus->sprom.boardflags2_hi = sprom[SPOFF(SSB_SPROM8_BFL2HI)];
|
|
|
+-
|
|
|
+- bus->sprom.country_code = sprom[SPOFF(SSB_SPROM8_CCODE)];
|
|
|
+-
|
|
|
+- bus->sprom.fem.ghz2.tssipos = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
+- SSB_SROM8_FEM_TSSIPOS) >> SSB_SROM8_FEM_TSSIPOS_SHIFT;
|
|
|
+- bus->sprom.fem.ghz2.extpa_gain = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
+- SSB_SROM8_FEM_EXTPA_GAIN) >> SSB_SROM8_FEM_EXTPA_GAIN_SHIFT;
|
|
|
+- bus->sprom.fem.ghz2.pdet_range = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
+- SSB_SROM8_FEM_PDET_RANGE) >> SSB_SROM8_FEM_PDET_RANGE_SHIFT;
|
|
|
+- bus->sprom.fem.ghz2.tr_iso = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
+- SSB_SROM8_FEM_TR_ISO) >> SSB_SROM8_FEM_TR_ISO_SHIFT;
|
|
|
+- bus->sprom.fem.ghz2.antswlut = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
+- SSB_SROM8_FEM_ANTSWLUT) >> SSB_SROM8_FEM_ANTSWLUT_SHIFT;
|
|
|
+-
|
|
|
+- bus->sprom.fem.ghz5.tssipos = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
+- SSB_SROM8_FEM_TSSIPOS) >> SSB_SROM8_FEM_TSSIPOS_SHIFT;
|
|
|
+- bus->sprom.fem.ghz5.extpa_gain = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
+- SSB_SROM8_FEM_EXTPA_GAIN) >> SSB_SROM8_FEM_EXTPA_GAIN_SHIFT;
|
|
|
+- bus->sprom.fem.ghz5.pdet_range = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
+- SSB_SROM8_FEM_PDET_RANGE) >> SSB_SROM8_FEM_PDET_RANGE_SHIFT;
|
|
|
+- bus->sprom.fem.ghz5.tr_iso = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
+- SSB_SROM8_FEM_TR_ISO) >> SSB_SROM8_FEM_TR_ISO_SHIFT;
|
|
|
+- bus->sprom.fem.ghz5.antswlut = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
+- SSB_SROM8_FEM_ANTSWLUT) >> SSB_SROM8_FEM_ANTSWLUT_SHIFT;
|
|
|
+ SPEX(fem.ghz2.tssipos, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_TSSIPOS,
|
|
|
+ SSB_SROM8_FEM_TSSIPOS_SHIFT);
|
|
|
+ SPEX(fem.ghz2.extpa_gain, SSB_SPROM8_FEM2G, SSB_SROM8_FEM_EXTPA_GAIN,
|
|
|
@@ -3802,71 +3866,7 @@
|
|
|
+ case BCMA_CHIP_ID_BCM4331:
|
|
|
+ present_mask = BCMA_CC_CHIPST_4331_SPROM_PRESENT;
|
|
|
+ break;
|
|
|
-
|
|
|
-- bus->sprom.txpid2g[0] = (sprom[SPOFF(SSB_SPROM4_TXPID2G01)] &
|
|
|
-- SSB_SPROM4_TXPID2G0) >> SSB_SPROM4_TXPID2G0_SHIFT;
|
|
|
-- bus->sprom.txpid2g[1] = (sprom[SPOFF(SSB_SPROM4_TXPID2G01)] &
|
|
|
-- SSB_SPROM4_TXPID2G1) >> SSB_SPROM4_TXPID2G1_SHIFT;
|
|
|
-- bus->sprom.txpid2g[2] = (sprom[SPOFF(SSB_SPROM4_TXPID2G23)] &
|
|
|
-- SSB_SPROM4_TXPID2G2) >> SSB_SPROM4_TXPID2G2_SHIFT;
|
|
|
-- bus->sprom.txpid2g[3] = (sprom[SPOFF(SSB_SPROM4_TXPID2G23)] &
|
|
|
-- SSB_SPROM4_TXPID2G3) >> SSB_SPROM4_TXPID2G3_SHIFT;
|
|
|
--
|
|
|
-- bus->sprom.txpid5gl[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL01)] &
|
|
|
-- SSB_SPROM4_TXPID5GL0) >> SSB_SPROM4_TXPID5GL0_SHIFT;
|
|
|
-- bus->sprom.txpid5gl[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL01)] &
|
|
|
-- SSB_SPROM4_TXPID5GL1) >> SSB_SPROM4_TXPID5GL1_SHIFT;
|
|
|
-- bus->sprom.txpid5gl[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL23)] &
|
|
|
-- SSB_SPROM4_TXPID5GL2) >> SSB_SPROM4_TXPID5GL2_SHIFT;
|
|
|
-- bus->sprom.txpid5gl[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5GL23)] &
|
|
|
-- SSB_SPROM4_TXPID5GL3) >> SSB_SPROM4_TXPID5GL3_SHIFT;
|
|
|
--
|
|
|
-- bus->sprom.txpid5g[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5G01)] &
|
|
|
-- SSB_SPROM4_TXPID5G0) >> SSB_SPROM4_TXPID5G0_SHIFT;
|
|
|
-- bus->sprom.txpid5g[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5G01)] &
|
|
|
-- SSB_SPROM4_TXPID5G1) >> SSB_SPROM4_TXPID5G1_SHIFT;
|
|
|
-- bus->sprom.txpid5g[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5G23)] &
|
|
|
-- SSB_SPROM4_TXPID5G2) >> SSB_SPROM4_TXPID5G2_SHIFT;
|
|
|
-- bus->sprom.txpid5g[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5G23)] &
|
|
|
-- SSB_SPROM4_TXPID5G3) >> SSB_SPROM4_TXPID5G3_SHIFT;
|
|
|
--
|
|
|
-- bus->sprom.txpid5gh[0] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH01)] &
|
|
|
-- SSB_SPROM4_TXPID5GH0) >> SSB_SPROM4_TXPID5GH0_SHIFT;
|
|
|
-- bus->sprom.txpid5gh[1] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH01)] &
|
|
|
-- SSB_SPROM4_TXPID5GH1) >> SSB_SPROM4_TXPID5GH1_SHIFT;
|
|
|
-- bus->sprom.txpid5gh[2] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH23)] &
|
|
|
-- SSB_SPROM4_TXPID5GH2) >> SSB_SPROM4_TXPID5GH2_SHIFT;
|
|
|
-- bus->sprom.txpid5gh[3] = (sprom[SPOFF(SSB_SPROM4_TXPID5GH23)] &
|
|
|
-- SSB_SPROM4_TXPID5GH3) >> SSB_SPROM4_TXPID5GH3_SHIFT;
|
|
|
--
|
|
|
-- bus->sprom.boardflags_lo = sprom[SPOFF(SSB_SPROM8_BFLLO)];
|
|
|
-- bus->sprom.boardflags_hi = sprom[SPOFF(SSB_SPROM8_BFLHI)];
|
|
|
-- bus->sprom.boardflags2_lo = sprom[SPOFF(SSB_SPROM8_BFL2LO)];
|
|
|
-- bus->sprom.boardflags2_hi = sprom[SPOFF(SSB_SPROM8_BFL2HI)];
|
|
|
--
|
|
|
-- bus->sprom.country_code = sprom[SPOFF(SSB_SPROM8_CCODE)];
|
|
|
--
|
|
|
-- bus->sprom.fem.ghz2.tssipos = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
-- SSB_SROM8_FEM_TSSIPOS) >> SSB_SROM8_FEM_TSSIPOS_SHIFT;
|
|
|
-- bus->sprom.fem.ghz2.extpa_gain = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
-- SSB_SROM8_FEM_EXTPA_GAIN) >> SSB_SROM8_FEM_EXTPA_GAIN_SHIFT;
|
|
|
-- bus->sprom.fem.ghz2.pdet_range = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
-- SSB_SROM8_FEM_PDET_RANGE) >> SSB_SROM8_FEM_PDET_RANGE_SHIFT;
|
|
|
-- bus->sprom.fem.ghz2.tr_iso = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
-- SSB_SROM8_FEM_TR_ISO) >> SSB_SROM8_FEM_TR_ISO_SHIFT;
|
|
|
-- bus->sprom.fem.ghz2.antswlut = (sprom[SPOFF(SSB_SPROM8_FEM2G)] &
|
|
|
-- SSB_SROM8_FEM_ANTSWLUT) >> SSB_SROM8_FEM_ANTSWLUT_SHIFT;
|
|
|
--
|
|
|
-- bus->sprom.fem.ghz5.tssipos = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
-- SSB_SROM8_FEM_TSSIPOS) >> SSB_SROM8_FEM_TSSIPOS_SHIFT;
|
|
|
-- bus->sprom.fem.ghz5.extpa_gain = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
-- SSB_SROM8_FEM_EXTPA_GAIN) >> SSB_SROM8_FEM_EXTPA_GAIN_SHIFT;
|
|
|
-- bus->sprom.fem.ghz5.pdet_range = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
-- SSB_SROM8_FEM_PDET_RANGE) >> SSB_SROM8_FEM_PDET_RANGE_SHIFT;
|
|
|
-- bus->sprom.fem.ghz5.tr_iso = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
-- SSB_SROM8_FEM_TR_ISO) >> SSB_SROM8_FEM_TR_ISO_SHIFT;
|
|
|
-- bus->sprom.fem.ghz5.antswlut = (sprom[SPOFF(SSB_SPROM8_FEM5G)] &
|
|
|
-- SSB_SROM8_FEM_ANTSWLUT) >> SSB_SROM8_FEM_ANTSWLUT_SHIFT;
|
|
|
++
|
|
|
+ default:
|
|
|
+ return true;
|
|
|
+ }
|
|
|
@@ -4045,7 +4045,12 @@
|
|
|
#define BCMA_CORE_INVALID 0x700
|
|
|
#define BCMA_CORE_CHIPCOMMON 0x800
|
|
|
#define BCMA_CORE_ILINE20 0x801
|
|
|
-@@ -125,6 +138,41 @@ struct bcma_host_ops {
|
|
|
+@@ -121,10 +134,46 @@ struct bcma_host_ops {
|
|
|
+ #define BCMA_CORE_I2S 0x834
|
|
|
+ #define BCMA_CORE_SDR_DDR1_MEM_CTL 0x835 /* SDR/DDR1 memory controller core */
|
|
|
+ #define BCMA_CORE_SHIM 0x837 /* SHIM component in ubus/6362 */
|
|
|
++#define BCMA_CORE_ARM_CR4 0x83e
|
|
|
+ #define BCMA_CORE_DEFAULT 0xFFF
|
|
|
|
|
|
#define BCMA_MAX_NR_CORES 16
|
|
|
|
|
|
@@ -4087,7 +4092,7 @@
|
|
|
struct bcma_device {
|
|
|
struct bcma_bus *bus;
|
|
|
struct bcma_device_id id;
|
|
|
-@@ -136,8 +184,10 @@ struct bcma_device {
|
|
|
+@@ -136,8 +185,10 @@ struct bcma_device {
|
|
|
bool dev_registered;
|
|
|
|
|
|
u8 core_index;
|
|
|
@@ -4098,7 +4103,7 @@
|
|
|
u32 wrap;
|
|
|
|
|
|
void __iomem *io_addr;
|
|
|
-@@ -175,6 +225,12 @@ int __bcma_driver_register(struct bcma_d
|
|
|
+@@ -175,6 +226,12 @@ int __bcma_driver_register(struct bcma_d
|
|
|
|
|
|
extern void bcma_driver_unregister(struct bcma_driver *drv);
|
|
|
|
|
|
@@ -4111,7 +4116,7 @@
|
|
|
struct bcma_bus {
|
|
|
/* The MMIO area. */
|
|
|
void __iomem *mmio;
|
|
|
-@@ -191,14 +247,18 @@ struct bcma_bus {
|
|
|
+@@ -191,14 +248,18 @@ struct bcma_bus {
|
|
|
|
|
|
struct bcma_chipinfo chipinfo;
|
|
|
|
|
|
@@ -4131,7 +4136,7 @@
|
|
|
|
|
|
/* We decided to share SPROM struct with SSB as long as we do not need
|
|
|
* any hacks for BCMA. This simplifies drivers code. */
|
|
|
-@@ -282,6 +342,7 @@ static inline void bcma_maskset16(struct
|
|
|
+@@ -282,6 +343,7 @@ static inline void bcma_maskset16(struct
|
|
|
bcma_write16(cc, offset, (bcma_read16(cc, offset) & mask) | set);
|
|
|
}
|
|
|
|
|
|
@@ -4139,7 +4144,7 @@
|
|
|
extern bool bcma_core_is_enabled(struct bcma_device *core);
|
|
|
extern void bcma_core_disable(struct bcma_device *core, u32 flags);
|
|
|
extern int bcma_core_enable(struct bcma_device *core, u32 flags);
|
|
|
-@@ -289,6 +350,7 @@ extern void bcma_core_set_clockmode(stru
|
|
|
+@@ -289,6 +351,7 @@ extern void bcma_core_set_clockmode(stru
|
|
|
enum bcma_clkmode clkmode);
|
|
|
extern void bcma_core_pll_ctl(struct bcma_device *core, u32 req, u32 status,
|
|
|
bool on);
|
|
|
@@ -4324,7 +4329,17 @@
|
|
|
/* 0x1E0 is defined as shared BCMA_CLKCTLST */
|
|
|
#define BCMA_CC_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */
|
|
|
#define BCMA_CC_UART0_DATA 0x0300
|
|
|
-@@ -240,7 +353,60 @@
|
|
|
+@@ -203,6 +316,9 @@
|
|
|
+ #define BCMA_CC_PMU_CTL 0x0600 /* PMU control */
|
|
|
+ #define BCMA_CC_PMU_CTL_ILP_DIV 0xFFFF0000 /* ILP div mask */
|
|
|
+ #define BCMA_CC_PMU_CTL_ILP_DIV_SHIFT 16
|
|
|
++#define BCMA_CC_PMU_CTL_RES 0x00006000 /* reset control mask */
|
|
|
++#define BCMA_CC_PMU_CTL_RES_SHIFT 13
|
|
|
++#define BCMA_CC_PMU_CTL_RES_RELOAD 0x2 /* reload POR values */
|
|
|
+ #define BCMA_CC_PMU_CTL_PLL_UPD 0x00000400
|
|
|
+ #define BCMA_CC_PMU_CTL_NOILPONW 0x00000200 /* No ILP on wait */
|
|
|
+ #define BCMA_CC_PMU_CTL_HTREQEN 0x00000100 /* HT req enable */
|
|
|
+@@ -240,7 +356,60 @@
|
|
|
#define BCMA_CC_PLLCTL_ADDR 0x0660
|
|
|
#define BCMA_CC_PLLCTL_DATA 0x0664
|
|
|
#define BCMA_CC_SPROM 0x0800 /* SPROM beginning */
|
|
|
@@ -4386,7 +4401,7 @@
|
|
|
|
|
|
/* Divider allocation in 4716/47162/5356 */
|
|
|
#define BCMA_CC_PMU5_MAINPLL_CPU 1
|
|
|
-@@ -256,6 +422,15 @@
|
|
|
+@@ -256,6 +425,15 @@
|
|
|
|
|
|
/* 4706 PMU */
|
|
|
#define BCMA_CC_PMU4706_MAINPLL_PLL0 0
|
|
|
@@ -4402,7 +4417,7 @@
|
|
|
|
|
|
/* ALP clock on pre-PMU chips */
|
|
|
#define BCMA_CC_PMU_ALP_CLOCK 20000000
|
|
|
-@@ -284,6 +459,19 @@
|
|
|
+@@ -284,6 +462,19 @@
|
|
|
#define BCMA_CC_PPL_PCHI_OFF 5
|
|
|
#define BCMA_CC_PPL_PCHI_MASK 0x0000003f
|
|
|
|
|
|
@@ -4422,7 +4437,7 @@
|
|
|
/* BCM4331 ChipControl numbers. */
|
|
|
#define BCMA_CHIPCTL_4331_BT_COEXIST BIT(0) /* 0 disable */
|
|
|
#define BCMA_CHIPCTL_4331_SECI BIT(1) /* 0 SECI is disabled (JATG functional) */
|
|
|
-@@ -297,9 +485,25 @@
|
|
|
+@@ -297,9 +488,25 @@
|
|
|
#define BCMA_CHIPCTL_4331_OVR_PIPEAUXPWRDOWN BIT(9) /* override core control on pipe_AuxPowerDown */
|
|
|
#define BCMA_CHIPCTL_4331_PCIE_AUXCLKEN BIT(10) /* pcie_auxclkenable */
|
|
|
#define BCMA_CHIPCTL_4331_PCIE_PIPE_PLLDOWN BIT(11) /* pcie_pipe_pllpowerdown */
|
|
|
@@ -4448,7 +4463,7 @@
|
|
|
/* Data for the PMU, if available.
|
|
|
* Check availability with ((struct bcma_chipcommon)->capabilities & BCMA_CC_CAP_PMU)
|
|
|
*/
|
|
|
-@@ -310,11 +514,35 @@ struct bcma_chipcommon_pmu {
|
|
|
+@@ -310,11 +517,35 @@ struct bcma_chipcommon_pmu {
|
|
|
|
|
|
#ifdef CONFIG_BCMA_DRIVER_MIPS
|
|
|
struct bcma_pflash {
|
|
|
@@ -4484,7 +4499,7 @@
|
|
|
struct bcma_serial_port {
|
|
|
void *regs;
|
|
|
unsigned long clockspeed;
|
|
|
-@@ -330,15 +558,30 @@ struct bcma_drv_cc {
|
|
|
+@@ -330,15 +561,30 @@ struct bcma_drv_cc {
|
|
|
u32 capabilities;
|
|
|
u32 capabilities_ext;
|
|
|
u8 setup_done:1;
|
|
|
@@ -4515,7 +4530,7 @@
|
|
|
};
|
|
|
|
|
|
/* Register access */
|
|
|
-@@ -355,14 +598,16 @@ struct bcma_drv_cc {
|
|
|
+@@ -355,14 +601,16 @@ struct bcma_drv_cc {
|
|
|
bcma_cc_write32(cc, offset, (bcma_cc_read32(cc, offset) & (mask)) | (set))
|
|
|
|
|
|
extern void bcma_core_chipcommon_init(struct bcma_drv_cc *cc);
|
|
|
@@ -4534,7 +4549,7 @@
|
|
|
|
|
|
void bcma_chipco_irq_mask(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
|
|
|
|
|
-@@ -375,9 +620,12 @@ u32 bcma_chipco_gpio_outen(struct bcma_d
|
|
|
+@@ -375,9 +623,12 @@ u32 bcma_chipco_gpio_outen(struct bcma_d
|
|
|
u32 bcma_chipco_gpio_control(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
|
|
u32 bcma_chipco_gpio_intmask(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
|
|
u32 bcma_chipco_gpio_polarity(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
|
|
@@ -4547,7 +4562,7 @@
|
|
|
|
|
|
extern void bcma_chipco_pll_write(struct bcma_drv_cc *cc, u32 offset,
|
|
|
u32 value);
|
|
|
-@@ -387,5 +635,6 @@ extern void bcma_chipco_chipctl_maskset(
|
|
|
+@@ -387,5 +638,6 @@ extern void bcma_chipco_chipctl_maskset(
|
|
|
u32 offset, u32 mask, u32 set);
|
|
|
extern void bcma_chipco_regctl_maskset(struct bcma_drv_cc *cc,
|
|
|
u32 offset, u32 mask, u32 set);
|
|
|
@@ -4862,7 +4877,15 @@
|
|
|
/* Is there any BCM4328 on BCMA bus? */
|
|
|
#define BCMA_CLKCTLST_4328A0_HAVEHT 0x00010000 /* 4328a0 has reversed bits */
|
|
|
#define BCMA_CLKCTLST_4328A0_HAVEALP 0x00020000 /* 4328a0 has reversed bits */
|
|
|
-@@ -56,4 +58,36 @@
|
|
|
+@@ -35,6 +37,7 @@
|
|
|
+ #define BCMA_IOST_BIST_DONE 0x8000
|
|
|
+ #define BCMA_RESET_CTL 0x0800
|
|
|
+ #define BCMA_RESET_CTL_RESET 0x0001
|
|
|
++#define BCMA_RESET_ST 0x0804
|
|
|
+
|
|
|
+ /* BCMA PCI config space registers. */
|
|
|
+ #define BCMA_PCI_PMCSR 0x44
|
|
|
+@@ -56,4 +59,36 @@
|
|
|
#define BCMA_PCI_GPIO_XTAL 0x40 /* PCI config space GPIO 14 for Xtal powerup */
|
|
|
#define BCMA_PCI_GPIO_PLL 0x80 /* PCI config space GPIO 15 for PLL powerdown */
|
|
|
|