• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/char/

Lines Matching defs:brdp

411 static int	stl_brdinit(struct stlbrd *brdp);
421 static int stl_cd1400panelinit(struct stlbrd *brdp, struct stlpanel *panelp);
422 static void stl_cd1400portinit(struct stlbrd *brdp, struct stlpanel *panelp, struct stlport *portp);
450 static int stl_sc26198panelinit(struct stlbrd *brdp, struct stlpanel *panelp);
451 static void stl_sc26198portinit(struct stlbrd *brdp, struct stlpanel *panelp, struct stlport *portp);
478 int (*panelinit)(struct stlbrd *brdp, struct stlpanel *panelp);
479 void (*portinit)(struct stlbrd *brdp, struct stlpanel *panelp, struct stlport *portp);
690 struct stlbrd *brdp;
692 brdp = kzalloc(sizeof(struct stlbrd), GFP_KERNEL);
693 if (!brdp) {
699 brdp->magic = STL_BOARDMAGIC;
700 return brdp;
726 struct stlbrd *brdp;
736 brdp = stl_brds[brdnr];
737 if (brdp == NULL)
742 if (brdp->panels[panelnr] == NULL)
744 if (minordev < brdp->panels[panelnr]->nrports) {
748 minordev -= brdp->panels[panelnr]->nrports;
753 portp = brdp->panels[panelnr]->ports[portnr];
1025 struct stlbrd *brdp;
1048 brdp = stl_brds[portp->brdnr];
1049 if (brdp != NULL)
1050 sio.irq = brdp->irq;
1390 struct stlbrd *brdp;
1405 brdp = stl_brds[brdnr];
1406 if (brdp == NULL)
1408 if (brdp->state == 0)
1412 for (panelnr = 0; panelnr < brdp->nrpanels; panelnr++) {
1413 panelp = brdp->panels[panelnr];
1451 struct stlbrd *brdp = dev_id;
1453 pr_debug("stl_intr(brdp=%p,irq=%d)\n", brdp, brdp->irq);
1455 return IRQ_RETVAL((* brdp->isr)(brdp));
1464 static int stl_eiointr(struct stlbrd *brdp)
1471 panelp = brdp->panels[0];
1473 while (inb(brdp->iostatus) & EIO_INTRPEND) {
1487 static int stl_echatintr(struct stlbrd *brdp)
1493 outb((brdp->ioctrlval | ECH_BRDENABLE), brdp->ioctrl);
1495 while (inb(brdp->iostatus) & ECH_INTRPEND) {
1497 for (bnknr = 0; bnknr < brdp->nrbnks; bnknr++) {
1498 ioaddr = brdp->bnkstataddr[bnknr];
1500 panelp = brdp->bnk2panel[bnknr];
1506 outb((brdp->ioctrlval | ECH_BRDDISABLE), brdp->ioctrl);
1517 static int stl_echmcaintr(struct stlbrd *brdp)
1523 while (inb(brdp->iostatus) & ECH_INTRPEND) {
1525 for (bnknr = 0; bnknr < brdp->nrbnks; bnknr++) {
1526 ioaddr = brdp->bnkstataddr[bnknr];
1528 panelp = brdp->bnk2panel[bnknr];
1542 static int stl_echpciintr(struct stlbrd *brdp)
1550 for (bnknr = 0; bnknr < brdp->nrbnks; bnknr++) {
1551 outb(brdp->bnkpageaddr[bnknr], brdp->ioctrl);
1552 ioaddr = brdp->bnkstataddr[bnknr];
1554 panelp = brdp->bnk2panel[bnknr];
1572 static int stl_echpci64intr(struct stlbrd *brdp)
1578 while (inb(brdp->ioctrl) & 0x1) {
1580 for (bnknr = 0; bnknr < brdp->nrbnks; bnknr++) {
1581 ioaddr = brdp->bnkstataddr[bnknr];
1583 panelp = brdp->bnk2panel[bnknr];
1598 static int __devinit stl_initports(struct stlbrd *brdp, struct stlpanel *panelp)
1604 pr_debug("stl_initports(brdp=%p,panelp=%p)\n", brdp, panelp);
1606 chipmask = stl_panelinit(brdp, panelp);
1626 portp->clk = brdp->clk;
1636 stl_portinit(brdp, panelp, portp);
1642 static void stl_cleanup_panels(struct stlbrd *brdp)
1650 panelp = brdp->panels[j];
1675 static int __devinit stl_initeio(struct stlbrd *brdp)
1682 pr_debug("stl_initeio(brdp=%p)\n", brdp);
1684 brdp->ioctrl = brdp->ioaddr1 + 1;
1685 brdp->iostatus = brdp->ioaddr1 + 2;
1687 status = inb(brdp->iostatus);
1689 brdp->ioctrl++;
1695 if (brdp->brdtype == BRD_EASYIOPCI) {
1696 brdp->iosize1 = 0x80;
1697 brdp->iosize2 = 0x80;
1699 outb(0x41, (brdp->ioaddr2 + 0x4c));
1701 brdp->iosize1 = 8;
1703 if ((brdp->irq < 0) || (brdp->irq > 15) ||
1704 (stl_vecmap[brdp->irq] == (unsigned char) 0xff)) {
1706 brdp->irq, brdp->brdnr);
1710 outb((stl_vecmap[brdp->irq] | EIO_0WS |
1711 ((brdp->irqtype) ? EIO_INTLEVEL : EIO_INTEDGE)),
1712 brdp->ioctrl);
1716 if (!request_region(brdp->ioaddr1, brdp->iosize1, name)) {
1718 "%x conflicts with another device\n", brdp->brdnr,
1719 brdp->ioaddr1);
1723 if (brdp->iosize2 > 0)
1724 if (!request_region(brdp->ioaddr2, brdp->iosize2, name)) {
1727 brdp->brdnr, brdp->ioaddr2);
1730 brdp->brdnr, brdp->ioaddr1);
1737 brdp->clk = CD1400_CLK;
1738 brdp->isr = stl_eiointr;
1743 brdp->clk = CD1400_CLK8M;
1747 brdp->nrports = 8;
1750 brdp->nrports = 4;
1755 brdp->nrports = 4;
1758 brdp->nrports = 8;
1761 brdp->nrports = 16;
1785 panelp->brdnr = brdp->brdnr;
1787 panelp->nrports = brdp->nrports;
1788 panelp->iobase = brdp->ioaddr1;
1798 brdp->panels[0] = panelp;
1799 brdp->nrpanels = 1;
1800 brdp->state |= BRD_FOUND;
1801 brdp->hwid = status;
1802 if (request_irq(brdp->irq, stl_intr, IRQF_SHARED, name, brdp) != 0) {
1804 "routine for %s irq=%d\n", name, brdp->irq);
1811 stl_cleanup_panels(brdp);
1813 if (brdp->iosize2 > 0)
1814 release_region(brdp->ioaddr2, brdp->iosize2);
1816 release_region(brdp->ioaddr1, brdp->iosize1);
1828 static int __devinit stl_initech(struct stlbrd *brdp)
1835 pr_debug("stl_initech(brdp=%p)\n", brdp);
1845 switch (brdp->brdtype) {
1848 brdp->isr = stl_echatintr;
1849 brdp->ioctrl = brdp->ioaddr1 + 1;
1850 brdp->iostatus = brdp->ioaddr1 + 1;
1851 status = inb(brdp->iostatus);
1856 if ((brdp->irq < 0) || (brdp->irq > 15) ||
1857 (stl_vecmap[brdp->irq] == (unsigned char) 0xff)) {
1859 brdp->irq, brdp->brdnr);
1863 status = ((brdp->ioaddr2 & ECH_ADDR2MASK) >> 1);
1864 status |= (stl_vecmap[brdp->irq] << 1);
1865 outb((status | ECH_BRDRESET), brdp->ioaddr1);
1866 brdp->ioctrlval = ECH_INTENABLE |
1867 ((brdp->irqtype) ? ECH_INTLEVEL : ECH_INTEDGE);
1869 outb((brdp->ioctrlval | ECH_BRDENABLE), brdp->ioctrl);
1870 brdp->iosize1 = 2;
1871 brdp->iosize2 = 32;
1873 outb(status, brdp->ioaddr1);
1877 brdp->isr = stl_echmcaintr;
1878 brdp->ioctrl = brdp->ioaddr1 + 0x20;
1879 brdp->iostatus = brdp->ioctrl;
1880 status = inb(brdp->iostatus);
1885 if ((brdp->irq < 0) || (brdp->irq > 15) ||
1886 (stl_vecmap[brdp->irq] == (unsigned char) 0xff)) {
1888 brdp->irq, brdp->brdnr);
1892 outb(ECHMC_BRDRESET, brdp->ioctrl);
1893 outb(ECHMC_INTENABLE, brdp->ioctrl);
1894 brdp->iosize1 = 64;
1899 brdp->isr = stl_echpciintr;
1900 brdp->ioctrl = brdp->ioaddr1 + 2;
1901 brdp->iosize1 = 4;
1902 brdp->iosize2 = 8;
1907 brdp->isr = stl_echpci64intr;
1908 brdp->ioctrl = brdp->ioaddr2 + 0x40;
1909 outb(0x43, (brdp->ioaddr1 + 0x4c));
1910 brdp->iosize1 = 0x80;
1911 brdp->iosize2 = 0x80;
1916 printk("STALLION: unknown board type=%d\n", brdp->brdtype);
1926 if (!request_region(brdp->ioaddr1, brdp->iosize1, name)) {
1928 "%x conflicts with another device\n", brdp->brdnr,
1929 brdp->ioaddr1);
1933 if (brdp->iosize2 > 0)
1934 if (!request_region(brdp->ioaddr2, brdp->iosize2, name)) {
1937 brdp->brdnr, brdp->ioaddr2);
1940 brdp->brdnr, brdp->ioaddr1);
1948 brdp->clk = CD1400_CLK;
1949 brdp->hwid = status;
1951 ioaddr = brdp->ioaddr2;
1957 if (brdp->brdtype == BRD_ECHPCI) {
1958 outb(nxtid, brdp->ioctrl);
1959 ioaddr = brdp->ioaddr2;
1972 panelp->brdnr = brdp->brdnr;
1977 brdp->bnk2panel[banknr] = panelp;
1978 brdp->bnkpageaddr[banknr] = nxtid;
1979 brdp->bnkstataddr[banknr++] = ioaddr + ECH_PNLSTATUS;
1986 brdp->bnk2panel[banknr] = panelp;
1987 brdp->bnkpageaddr[banknr] = nxtid;
1988 brdp->bnkstataddr[banknr++] = ioaddr + 4 +
1998 if (brdp->brdtype != BRD_ECHPCI)
2000 brdp->bnk2panel[banknr] = panelp;
2001 brdp->bnkpageaddr[banknr] = ++nxtid;
2002 brdp->bnkstataddr[banknr++] = ioaddr +
2012 brdp->nrports += panelp->nrports;
2013 brdp->panels[panelnr++] = panelp;
2014 if ((brdp->brdtype != BRD_ECHPCI) &&
2015 (ioaddr >= (brdp->ioaddr2 + brdp->iosize2))) {
2021 brdp->nrpanels = panelnr;
2022 brdp->nrbnks = banknr;
2023 if (brdp->brdtype == BRD_ECH)
2024 outb((brdp->ioctrlval | ECH_BRDDISABLE), brdp->ioctrl);
2026 brdp->state |= BRD_FOUND;
2027 if (request_irq(brdp->irq, stl_intr, IRQF_SHARED, name, brdp) != 0) {
2029 "routine for %s irq=%d\n", name, brdp->irq);
2036 stl_cleanup_panels(brdp);
2037 if (brdp->iosize2 > 0)
2038 release_region(brdp->ioaddr2, brdp->iosize2);
2040 release_region(brdp->ioaddr1, brdp->iosize1);
2054 static int __devinit stl_brdinit(struct stlbrd *brdp)
2058 pr_debug("stl_brdinit(brdp=%p)\n", brdp);
2060 switch (brdp->brdtype) {
2063 retval = stl_initeio(brdp);
2071 retval = stl_initech(brdp);
2077 brdp->brdnr, brdp->brdtype);
2082 if ((brdp->state & BRD_FOUND) == 0) {
2084 stl_brdnames[brdp->brdtype], brdp->brdnr,
2085 brdp->ioaddr1, brdp->irq);
2090 if (brdp->panels[i] != NULL)
2091 stl_initports(brdp, brdp->panels[i]);
2094 "nrpanels=%d nrports=%d\n", stl_brdnames[brdp->brdtype],
2095 brdp->brdnr, brdp->ioaddr1, brdp->irq, brdp->nrpanels,
2096 brdp->nrports);
2100 free_irq(brdp->irq, brdp);
2102 stl_cleanup_panels(brdp);
2104 release_region(brdp->ioaddr1, brdp->iosize1);
2105 if (brdp->iosize2 > 0)
2106 release_region(brdp->ioaddr2, brdp->iosize2);
2141 struct stlbrd *brdp;
2151 brdp = stl_allocbrd();
2152 if (brdp == NULL) {
2165 brdp->brdnr = (unsigned int)brdnr;
2166 stl_brds[brdp->brdnr] = brdp;
2169 brdp->brdtype = brdtype;
2170 brdp->state |= STL_PROBED;
2178 brdp->ioaddr2 = pci_resource_start(pdev, 0);
2179 brdp->ioaddr1 = pci_resource_start(pdev, 1);
2182 brdp->ioaddr2 = pci_resource_start(pdev, 2);
2183 brdp->ioaddr1 = pci_resource_start(pdev, 1);
2186 brdp->ioaddr1 = pci_resource_start(pdev, 2);
2187 brdp->ioaddr2 = pci_resource_start(pdev, 1);
2194 brdp->irq = pdev->irq;
2195 retval = stl_brdinit(brdp);
2199 pci_set_drvdata(pdev, brdp);
2201 for (i = 0; i < brdp->nrports; i++)
2203 brdp->brdnr * STL_MAXPORTS + i, &pdev->dev);
2207 stl_brds[brdp->brdnr] = NULL;
2209 kfree(brdp);
2216 struct stlbrd *brdp = pci_get_drvdata(pdev);
2219 free_irq(brdp->irq, brdp);
2221 stl_cleanup_panels(brdp);
2223 release_region(brdp->ioaddr1, brdp->iosize1);
2224 if (brdp->iosize2 > 0)
2225 release_region(brdp->ioaddr2, brdp->iosize2);
2227 for (i = 0; i < brdp->nrports; i++)
2229 brdp->brdnr * STL_MAXPORTS + i);
2231 stl_brds[brdp->brdnr] = NULL;
2232 kfree(brdp);
2251 struct stlbrd *brdp;
2259 brdp = stl_brds[stl_brdstats.brd];
2260 if (brdp == NULL)
2264 stl_brdstats.brd = brdp->brdnr;
2265 stl_brdstats.type = brdp->brdtype;
2266 stl_brdstats.hwid = brdp->hwid;
2267 stl_brdstats.state = brdp->state;
2268 stl_brdstats.ioaddr = brdp->ioaddr1;
2269 stl_brdstats.ioaddr2 = brdp->ioaddr2;
2270 stl_brdstats.irq = brdp->irq;
2271 stl_brdstats.nrpanels = brdp->nrpanels;
2272 stl_brdstats.nrports = brdp->nrports;
2273 for (i = 0; i < brdp->nrpanels; i++) {
2274 panelp = brdp->panels[i];
2291 struct stlbrd *brdp;
2296 brdp = stl_brds[brdnr];
2297 if (brdp == NULL)
2299 if (panelnr < 0 || (unsigned int)panelnr >= brdp->nrpanels)
2301 panelp = brdp->panels[panelnr];
2428 struct stlbrd *brdp;
2434 brdp = stl_brds[stl_dummybrd.brdnr];
2435 if (!brdp)
2437 return copy_to_user(arg, brdp, sizeof(struct stlbrd)) ? -EFAULT : 0;
2554 static int stl_cd1400panelinit(struct stlbrd *brdp, struct stlpanel *panelp)
2561 pr_debug("stl_panelinit(brdp=%p,panelp=%p)\n", brdp, panelp);
2572 if (brdp->brdtype == BRD_ECHPCI) {
2573 outb((panelp->pagenr + (i >> 1)), brdp->ioctrl);
2610 static void stl_cd1400portinit(struct stlbrd *brdp, struct stlpanel *panelp, struct stlport *portp)
2613 pr_debug("stl_cd1400portinit(brdp=%p,panelp=%p,portp=%p)\n", brdp,
2616 if ((brdp == NULL) || (panelp == NULL) ||
2621 portp->ioaddr = panelp->iobase + (((brdp->brdtype == BRD_ECHPCI) ||
2662 struct stlbrd *brdp;
2685 brdp = stl_brds[portp->brdnr];
2686 if (brdp == NULL)
3560 static int stl_sc26198panelinit(struct stlbrd *brdp, struct stlpanel *panelp)
3565 pr_debug("stl_sc26198panelinit(brdp=%p,panelp=%p)\n", brdp, panelp);
3574 if (brdp->brdtype == BRD_ECHPCI)
3575 outb(panelp->pagenr, brdp->ioctrl);
3605 static void stl_sc26198portinit(struct stlbrd *brdp, struct stlpanel *panelp, struct stlport *portp)
3607 pr_debug("stl_sc26198portinit(brdp=%p,panelp=%p,portp=%p)\n", brdp,
3610 if ((brdp == NULL) || (panelp == NULL) ||
3633 struct stlbrd *brdp;
3647 brdp = stl_brds[portp->brdnr];
3648 if (brdp == NULL)
4478 struct stlbrd *brdp;
4482 if ((brdp = stl_brds[i]) == NULL || (brdp->state & STL_PROBED))
4485 free_irq(brdp->irq, brdp);
4487 stl_cleanup_panels(brdp);
4489 release_region(brdp->ioaddr1, brdp->iosize1);
4490 if (brdp->iosize2 > 0)
4491 release_region(brdp->ioaddr2, brdp->iosize2);
4493 kfree(brdp);
4503 struct stlbrd *brdp;
4544 if ((brdp = stl_allocbrd()) == NULL)
4546 brdp->brdnr = i;
4547 brdp->brdtype = conf.brdtype;
4548 brdp->ioaddr1 = conf.ioaddr1;
4549 brdp->ioaddr2 = conf.ioaddr2;
4550 brdp->irq = conf.irq;
4551 brdp->irqtype = conf.irqtype;
4552 stl_brds[brdp->brdnr] = brdp;
4553 if (stl_brdinit(brdp)) {
4554 stl_brds[brdp->brdnr] = NULL;
4555 kfree(brdp);
4557 for (j = 0; j < brdp->nrports; j++)
4559 brdp->brdnr * STL_MAXPORTS + j, NULL);
4596 struct stlbrd *brdp;
4611 if ((brdp = stl_brds[i]) == NULL || (brdp->state & STL_PROBED))
4613 for (j = 0; j < brdp->nrports; j++)
4615 brdp->brdnr * STL_MAXPORTS + j);