aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch166
1 files changed, 0 insertions, 166 deletions
diff --git a/target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch b/target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch
deleted file mode 100644
index fd7b8ae78e..0000000000
--- a/target/linux/brcm47xx/patches-3.0/0006-bcma-add-serial-console-support.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 4d58b9a14669e5ea0026f0d27257041aecfcbed3 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Mon, 6 Jun 2011 00:07:33 +0200
-Subject: [PATCH 06/26] bcma: add serial console support
-
-This adds support for serial console to bcma, when operating on an SoC.
-
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- drivers/bcma/bcma_private.h | 8 ++++
- drivers/bcma/driver_chipcommon.c | 48 +++++++++++++++++++++++++++
- drivers/bcma/driver_chipcommon_pmu.c | 26 ++++++++++++++
- drivers/bcma/driver_mips.c | 1 +
- include/linux/bcma/bcma_driver_chipcommon.h | 14 ++++++++
- 5 files changed, 97 insertions(+), 0 deletions(-)
-
---- a/drivers/bcma/bcma_private.h
-+++ b/drivers/bcma/bcma_private.h
-@@ -29,6 +29,14 @@ void bcma_init_bus(struct bcma_bus *bus)
- /* sprom.c */
- int bcma_sprom_get(struct bcma_bus *bus);
-
-+/* driver_chipcommon.c */
-+#ifdef CONFIG_BCMA_DRIVER_MIPS
-+void bcma_chipco_serial_init(struct bcma_drv_cc *cc);
-+#endif /* CONFIG_BCMA_DRIVER_MIPS */
-+
-+/* driver_chipcommon_pmu.c */
-+u32 bcma_pmu_alp_clock(struct bcma_drv_cc *cc);
-+
- #ifdef CONFIG_BCMA_HOST_PCI
- /* host_pci.c */
- extern int __init bcma_host_pci_init(void);
---- a/drivers/bcma/driver_chipcommon.c
-+++ b/drivers/bcma/driver_chipcommon.c
-@@ -106,3 +106,51 @@ u32 bcma_chipco_gpio_polarity(struct bcm
- {
- return bcma_cc_write32_masked(cc, BCMA_CC_GPIOPOL, mask, value);
- }
-+
-+#ifdef CONFIG_BCMA_DRIVER_MIPS
-+void bcma_chipco_serial_init(struct bcma_drv_cc *cc)
-+{
-+ unsigned int irq;
-+ u32 baud_base;
-+ u32 i;
-+ unsigned int ccrev = cc->core->id.rev;
-+ struct bcma_serial_port *ports = cc->serial_ports;
-+
-+ if (ccrev >= 11 && ccrev != 15) {
-+ /* Fixed ALP clock */
-+ baud_base = bcma_pmu_alp_clock(cc);
-+ if (ccrev >= 21) {
-+ /* Turn off UART clock before switching clocksource. */
-+ bcma_cc_write32(cc, BCMA_CC_CORECTL,
-+ bcma_cc_read32(cc, BCMA_CC_CORECTL)
-+ & ~BCMA_CC_CORECTL_UARTCLKEN);
-+ }
-+ /* Set the override bit so we don't divide it */
-+ bcma_cc_write32(cc, BCMA_CC_CORECTL,
-+ bcma_cc_read32(cc, BCMA_CC_CORECTL)
-+ | BCMA_CC_CORECTL_UARTCLK0);
-+ if (ccrev >= 21) {
-+ /* Re-enable the UART clock. */
-+ bcma_cc_write32(cc, BCMA_CC_CORECTL,
-+ bcma_cc_read32(cc, BCMA_CC_CORECTL)
-+ | BCMA_CC_CORECTL_UARTCLKEN);
-+ }
-+ } else {
-+ pr_err("serial not supported on this device ccrev: 0x%x\n",
-+ ccrev);
-+ return;
-+ }
-+
-+ irq = bcma_core_mips_irq(cc->core);
-+
-+ /* Determine the registers of the UARTs */
-+ cc->nr_serial_ports = (cc->capabilities & BCMA_CC_CAP_NRUART);
-+ for (i = 0; i < cc->nr_serial_ports; i++) {
-+ ports[i].regs = cc->core->io_addr + BCMA_CC_UART0_DATA +
-+ (i * 256);
-+ ports[i].irq = irq;
-+ ports[i].baud_base = baud_base;
-+ ports[i].reg_shift = 0;
-+ }
-+}
-+#endif /* CONFIG_BCMA_DRIVER_MIPS */
---- a/drivers/bcma/driver_chipcommon_pmu.c
-+++ b/drivers/bcma/driver_chipcommon_pmu.c
-@@ -136,3 +136,29 @@ void bcma_pmu_init(struct bcma_drv_cc *c
- bcma_pmu_swreg_init(cc);
- bcma_pmu_workarounds(cc);
- }
-+
-+u32 bcma_pmu_alp_clock(struct bcma_drv_cc *cc)
-+{
-+ struct bcma_bus *bus = cc->core->bus;
-+
-+ switch (bus->chipinfo.id) {
-+ case 0x4716:
-+ case 0x4748:
-+ case 47162:
-+ case 0x4313:
-+ case 0x5357:
-+ case 0x4749:
-+ case 53572:
-+ /* always 20Mhz */
-+ return 20000 * 1000;
-+ case 0x5356:
-+ case 0x5300:
-+ /* always 25Mhz */
-+ return 25000 * 1000;
-+ default:
-+ pr_warn("No ALP clock specified for %04X device, "
-+ "pmu rev. %d, using default %d Hz\n",
-+ bus->chipinfo.id, cc->pmu.rev, BCMA_CC_PMU_ALP_CLOCK);
-+ }
-+ return BCMA_CC_PMU_ALP_CLOCK;
-+}
---- a/drivers/bcma/driver_mips.c
-+++ b/drivers/bcma/driver_mips.c
-@@ -238,6 +238,7 @@ void bcma_core_mips_init(struct bcma_drv
- if (mcore->setup_done)
- return;
-
-+ bcma_chipco_serial_init(&bus->drv_cc);
- bcma_core_mips_flash_detect(mcore);
- mcore->setup_done = true;
- }
---- a/include/linux/bcma/bcma_driver_chipcommon.h
-+++ b/include/linux/bcma/bcma_driver_chipcommon.h
-@@ -241,6 +241,9 @@
- #define BCMA_CC_SPROM 0x0800 /* SPROM beginning */
- #define BCMA_CC_SPROM_PCIE6 0x0830 /* SPROM beginning on PCIe rev >= 6 */
-
-+/* ALP clock on pre-PMU chips */
-+#define BCMA_CC_PMU_ALP_CLOCK 20000000
-+
- /* Data for the PMU, if available.
- * Check availability with ((struct bcma_chipcommon)->capabilities & BCMA_CC_CAP_PMU)
- */
-@@ -255,6 +258,14 @@ struct bcma_pflash {
- u32 window;
- u32 window_size;
- };
-+
-+struct bcma_serial_port {
-+ void *regs;
-+ unsigned long clockspeed;
-+ unsigned int irq;
-+ unsigned int baud_base;
-+ unsigned int reg_shift;
-+};
- #endif /* CONFIG_BCMA_DRIVER_MIPS */
-
- struct bcma_drv_cc {
-@@ -268,6 +279,9 @@ struct bcma_drv_cc {
- struct bcma_chipcommon_pmu pmu;
- #ifdef CONFIG_BCMA_DRIVER_MIPS
- struct bcma_pflash pflash;
-+
-+ int nr_serial_ports;
-+ struct bcma_serial_port serial_ports[4];
- #endif /* CONFIG_BCMA_DRIVER_MIPS */
- };
-