summaryrefslogtreecommitdiff
path: root/target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch278
1 files changed, 0 insertions, 278 deletions
diff --git a/target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch b/target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch
deleted file mode 100644
index 740e96e..0000000
--- a/target/linux/brcm47xx/patches-3.0/0001-bcma-move-parsing-of-EEPROM-into-own-function.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-From a1bf12e78294c6cd3d8747e1e07c48977ca1e3e3 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Sat, 11 Jun 2011 16:47:38 +0200
-Subject: [PATCH 01/26] bcma: move parsing of EEPROM into own function.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Move the parsing of the EEPROM data in scan function for one core into
-an own function. Now we are able to use it in some other scan function
-as well.
-
-Acked-by: Rafał Miłecki <zajec5@gmail.com>
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- drivers/bcma/scan.c | 230 ++++++++++++++++++++++++++-------------------------
- 1 files changed, 118 insertions(+), 112 deletions(-)
-
---- a/drivers/bcma/scan.c
-+++ b/drivers/bcma/scan.c
-@@ -200,16 +200,124 @@ static s32 bcma_erom_get_addr_desc(struc
- return addrl;
- }
-
-+static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr,
-+ struct bcma_device *core)
-+{
-+ s32 tmp;
-+ u8 i, j;
-+ s32 cia, cib;
-+ u8 ports[2], wrappers[2];
-+
-+ /* get CIs */
-+ cia = bcma_erom_get_ci(bus, eromptr);
-+ if (cia < 0) {
-+ bcma_erom_push_ent(eromptr);
-+ if (bcma_erom_is_end(bus, eromptr))
-+ return -ESPIPE;
-+ return -EILSEQ;
-+ }
-+ cib = bcma_erom_get_ci(bus, eromptr);
-+ if (cib < 0)
-+ return -EILSEQ;
-+
-+ /* parse CIs */
-+ core->id.class = (cia & SCAN_CIA_CLASS) >> SCAN_CIA_CLASS_SHIFT;
-+ core->id.id = (cia & SCAN_CIA_ID) >> SCAN_CIA_ID_SHIFT;
-+ core->id.manuf = (cia & SCAN_CIA_MANUF) >> SCAN_CIA_MANUF_SHIFT;
-+ ports[0] = (cib & SCAN_CIB_NMP) >> SCAN_CIB_NMP_SHIFT;
-+ ports[1] = (cib & SCAN_CIB_NSP) >> SCAN_CIB_NSP_SHIFT;
-+ wrappers[0] = (cib & SCAN_CIB_NMW) >> SCAN_CIB_NMW_SHIFT;
-+ wrappers[1] = (cib & SCAN_CIB_NSW) >> SCAN_CIB_NSW_SHIFT;
-+ core->id.rev = (cib & SCAN_CIB_REV) >> SCAN_CIB_REV_SHIFT;
-+
-+ if (((core->id.manuf == BCMA_MANUF_ARM) &&
-+ (core->id.id == 0xFFF)) ||
-+ (ports[1] == 0)) {
-+ bcma_erom_skip_component(bus, eromptr);
-+ return -ENXIO;
-+ }
-+
-+ /* check if component is a core at all */
-+ if (wrappers[0] + wrappers[1] == 0) {
-+ /* we could save addrl of the router
-+ if (cid == BCMA_CORE_OOB_ROUTER)
-+ */
-+ bcma_erom_skip_component(bus, eromptr);
-+ return -ENXIO;
-+ }
-+
-+ if (bcma_erom_is_bridge(bus, eromptr)) {
-+ bcma_erom_skip_component(bus, eromptr);
-+ return -ENXIO;
-+ }
-+
-+ /* get & parse master ports */
-+ for (i = 0; i < ports[0]; i++) {
-+ u32 mst_port_d = bcma_erom_get_mst_port(bus, eromptr);
-+ if (mst_port_d < 0)
-+ return -EILSEQ;
-+ }
-+
-+ /* get & parse slave ports */
-+ for (i = 0; i < ports[1]; i++) {
-+ for (j = 0; ; j++) {
-+ tmp = bcma_erom_get_addr_desc(bus, eromptr,
-+ SCAN_ADDR_TYPE_SLAVE, i);
-+ if (tmp < 0) {
-+ /* no more entries for port _i_ */
-+ /* pr_debug("erom: slave port %d "
-+ * "has %d descriptors\n", i, j); */
-+ break;
-+ } else {
-+ if (i == 0 && j == 0)
-+ core->addr = tmp;
-+ }
-+ }
-+ }
-+
-+ /* get & parse master wrappers */
-+ for (i = 0; i < wrappers[0]; i++) {
-+ for (j = 0; ; j++) {
-+ tmp = bcma_erom_get_addr_desc(bus, eromptr,
-+ SCAN_ADDR_TYPE_MWRAP, i);
-+ if (tmp < 0) {
-+ /* no more entries for port _i_ */
-+ /* pr_debug("erom: master wrapper %d "
-+ * "has %d descriptors\n", i, j); */
-+ break;
-+ } else {
-+ if (i == 0 && j == 0)
-+ core->wrap = tmp;
-+ }
-+ }
-+ }
-+
-+ /* get & parse slave wrappers */
-+ for (i = 0; i < wrappers[1]; i++) {
-+ u8 hack = (ports[1] == 1) ? 0 : 1;
-+ for (j = 0; ; j++) {
-+ tmp = bcma_erom_get_addr_desc(bus, eromptr,
-+ SCAN_ADDR_TYPE_SWRAP, i + hack);
-+ if (tmp < 0) {
-+ /* no more entries for port _i_ */
-+ /* pr_debug("erom: master wrapper %d "
-+ * has %d descriptors\n", i, j); */
-+ break;
-+ } else {
-+ if (wrappers[0] == 0 && !i && !j)
-+ core->wrap = tmp;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
- int bcma_bus_scan(struct bcma_bus *bus)
- {
- u32 erombase;
- u32 __iomem *eromptr, *eromend;
-
-- s32 cia, cib;
-- u8 ports[2], wrappers[2];
--
- s32 tmp;
-- u8 i, j;
-
- int err;
-
-@@ -236,112 +344,13 @@ int bcma_bus_scan(struct bcma_bus *bus)
- INIT_LIST_HEAD(&core->list);
- core->bus = bus;
-
-- /* get CIs */
-- cia = bcma_erom_get_ci(bus, &eromptr);
-- if (cia < 0) {
-- bcma_erom_push_ent(&eromptr);
-- if (bcma_erom_is_end(bus, &eromptr))
-- break;
-- err= -EILSEQ;
-- goto out;
-- }
-- cib = bcma_erom_get_ci(bus, &eromptr);
-- if (cib < 0) {
-- err= -EILSEQ;
-- goto out;
-- }
--
-- /* parse CIs */
-- core->id.class = (cia & SCAN_CIA_CLASS) >> SCAN_CIA_CLASS_SHIFT;
-- core->id.id = (cia & SCAN_CIA_ID) >> SCAN_CIA_ID_SHIFT;
-- core->id.manuf = (cia & SCAN_CIA_MANUF) >> SCAN_CIA_MANUF_SHIFT;
-- ports[0] = (cib & SCAN_CIB_NMP) >> SCAN_CIB_NMP_SHIFT;
-- ports[1] = (cib & SCAN_CIB_NSP) >> SCAN_CIB_NSP_SHIFT;
-- wrappers[0] = (cib & SCAN_CIB_NMW) >> SCAN_CIB_NMW_SHIFT;
-- wrappers[1] = (cib & SCAN_CIB_NSW) >> SCAN_CIB_NSW_SHIFT;
-- core->id.rev = (cib & SCAN_CIB_REV) >> SCAN_CIB_REV_SHIFT;
--
-- if (((core->id.manuf == BCMA_MANUF_ARM) &&
-- (core->id.id == 0xFFF)) ||
-- (ports[1] == 0)) {
-- bcma_erom_skip_component(bus, &eromptr);
-+ err = bcma_get_next_core(bus, &eromptr, core);
-+ if (err == -ENXIO)
- continue;
-- }
--
-- /* check if component is a core at all */
-- if (wrappers[0] + wrappers[1] == 0) {
-- /* we could save addrl of the router
-- if (cid == BCMA_CORE_OOB_ROUTER)
-- */
-- bcma_erom_skip_component(bus, &eromptr);
-- continue;
-- }
--
-- if (bcma_erom_is_bridge(bus, &eromptr)) {
-- bcma_erom_skip_component(bus, &eromptr);
-- continue;
-- }
--
-- /* get & parse master ports */
-- for (i = 0; i < ports[0]; i++) {
-- u32 mst_port_d = bcma_erom_get_mst_port(bus, &eromptr);
-- if (mst_port_d < 0) {
-- err= -EILSEQ;
-- goto out;
-- }
-- }
--
-- /* get & parse slave ports */
-- for (i = 0; i < ports[1]; i++) {
-- for (j = 0; ; j++) {
-- tmp = bcma_erom_get_addr_desc(bus, &eromptr,
-- SCAN_ADDR_TYPE_SLAVE, i);
-- if (tmp < 0) {
-- /* no more entries for port _i_ */
-- /* pr_debug("erom: slave port %d "
-- * "has %d descriptors\n", i, j); */
-- break;
-- } else {
-- if (i == 0 && j == 0)
-- core->addr = tmp;
-- }
-- }
-- }
--
-- /* get & parse master wrappers */
-- for (i = 0; i < wrappers[0]; i++) {
-- for (j = 0; ; j++) {
-- tmp = bcma_erom_get_addr_desc(bus, &eromptr,
-- SCAN_ADDR_TYPE_MWRAP, i);
-- if (tmp < 0) {
-- /* no more entries for port _i_ */
-- /* pr_debug("erom: master wrapper %d "
-- * "has %d descriptors\n", i, j); */
-- break;
-- } else {
-- if (i == 0 && j == 0)
-- core->wrap = tmp;
-- }
-- }
-- }
--
-- /* get & parse slave wrappers */
-- for (i = 0; i < wrappers[1]; i++) {
-- u8 hack = (ports[1] == 1) ? 0 : 1;
-- for (j = 0; ; j++) {
-- tmp = bcma_erom_get_addr_desc(bus, &eromptr,
-- SCAN_ADDR_TYPE_SWRAP, i + hack);
-- if (tmp < 0) {
-- /* no more entries for port _i_ */
-- /* pr_debug("erom: master wrapper %d "
-- * has %d descriptors\n", i, j); */
-- break;
-- } else {
-- if (wrappers[0] == 0 && !i && !j)
-- core->wrap = tmp;
-- }
-- }
-- }
-+ else if (err == -ESPIPE)
-+ break;
-+ else if (err < 0)
-+ return err;
-
- pr_info("Core %d found: %s "
- "(manuf 0x%03X, id 0x%03X, rev 0x%02X, class 0x%X)\n",
-@@ -351,9 +360,6 @@ int bcma_bus_scan(struct bcma_bus *bus)
-
- core->core_index = bus->nr_cores++;
- list_add(&core->list, &bus->cores);
-- continue;
--out:
-- return err;
- }
-
- return 0;