Commit 5c0eb90094d64d56df8be23bb75d48e63c96c180
Committed by
David Woodhouse
1 parent
e8a89cebdb
Exists in
master
and in
4 other branches
nand/denali: Fixed probe function bugs
Fixed a pci_resource_len function error; Changed returning sequence of probe function; Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Showing 1 changed file with 23 additions and 21 deletions Side-by-side Diff
drivers/mtd/nand/denali.c
... | ... | @@ -1536,7 +1536,7 @@ |
1536 | 1536 | ret = pci_enable_device(dev); |
1537 | 1537 | if (ret) { |
1538 | 1538 | printk(KERN_ERR "Spectra: pci_enable_device failed.\n"); |
1539 | - goto failed_enable; | |
1539 | + goto failed_alloc_memery; | |
1540 | 1540 | } |
1541 | 1541 | |
1542 | 1542 | if (id->driver_data == INTEL_CE4100) { |
... | ... | @@ -1547,7 +1547,7 @@ |
1547 | 1547 | printk(KERN_ERR "Intel CE4100 only supports" |
1548 | 1548 | " ONFI timing mode 1 or below\n"); |
1549 | 1549 | ret = -EINVAL; |
1550 | - goto failed_enable; | |
1550 | + goto failed_enable_dev; | |
1551 | 1551 | } |
1552 | 1552 | denali->platform = INTEL_CE4100; |
1553 | 1553 | mem_base = pci_resource_start(dev, 0); |
... | ... | @@ -1557,7 +1557,7 @@ |
1557 | 1557 | } else { |
1558 | 1558 | denali->platform = INTEL_MRST; |
1559 | 1559 | csr_base = pci_resource_start(dev, 0); |
1560 | - csr_len = pci_resource_start(dev, 0); | |
1560 | + csr_len = pci_resource_len(dev, 0); | |
1561 | 1561 | mem_base = pci_resource_start(dev, 1); |
1562 | 1562 | mem_len = pci_resource_len(dev, 1); |
1563 | 1563 | if (!mem_len) { |
... | ... | @@ -1576,7 +1576,7 @@ |
1576 | 1576 | |
1577 | 1577 | if (ret) { |
1578 | 1578 | printk(KERN_ERR "Spectra: no usable DMA configuration\n"); |
1579 | - goto failed_enable; | |
1579 | + goto failed_enable_dev; | |
1580 | 1580 | } |
1581 | 1581 | denali->buf.dma_buf = |
1582 | 1582 | pci_map_single(dev, denali->buf.buf, |
... | ... | @@ -1585,7 +1585,7 @@ |
1585 | 1585 | |
1586 | 1586 | if (pci_dma_mapping_error(dev, denali->buf.dma_buf)) { |
1587 | 1587 | printk(KERN_ERR "Spectra: failed to map DMA buffer\n"); |
1588 | - goto failed_enable; | |
1588 | + goto failed_enable_dev; | |
1589 | 1589 | } |
1590 | 1590 | |
1591 | 1591 | pci_set_master(dev); |
1592 | 1592 | |
... | ... | @@ -1594,14 +1594,14 @@ |
1594 | 1594 | ret = pci_request_regions(dev, DENALI_NAND_NAME); |
1595 | 1595 | if (ret) { |
1596 | 1596 | printk(KERN_ERR "Spectra: Unable to request memory regions\n"); |
1597 | - goto failed_req_csr; | |
1597 | + goto failed_dma_map; | |
1598 | 1598 | } |
1599 | 1599 | |
1600 | 1600 | denali->flash_reg = ioremap_nocache(csr_base, csr_len); |
1601 | 1601 | if (!denali->flash_reg) { |
1602 | 1602 | printk(KERN_ERR "Spectra: Unable to remap memory region\n"); |
1603 | 1603 | ret = -ENOMEM; |
1604 | - goto failed_remap_csr; | |
1604 | + goto failed_req_regions; | |
1605 | 1605 | } |
1606 | 1606 | nand_dbg_print(NAND_DBG_DEBUG, "Spectra: CSR 0x%08Lx -> 0x%p (0x%lx)\n", |
1607 | 1607 | (uint64_t)csr_base, denali->flash_reg, csr_len); |
1608 | 1608 | |
... | ... | @@ -1609,9 +1609,8 @@ |
1609 | 1609 | denali->flash_mem = ioremap_nocache(mem_base, mem_len); |
1610 | 1610 | if (!denali->flash_mem) { |
1611 | 1611 | printk(KERN_ERR "Spectra: ioremap_nocache failed!"); |
1612 | - iounmap(denali->flash_reg); | |
1613 | 1612 | ret = -ENOMEM; |
1614 | - goto failed_remap_csr; | |
1613 | + goto failed_remap_reg; | |
1615 | 1614 | } |
1616 | 1615 | |
1617 | 1616 | nand_dbg_print(NAND_DBG_WARN, |
... | ... | @@ -1627,7 +1626,7 @@ |
1627 | 1626 | DENALI_NAND_NAME, denali)) { |
1628 | 1627 | printk(KERN_ERR "Spectra: Unable to allocate IRQ\n"); |
1629 | 1628 | ret = -ENODEV; |
1630 | - goto failed_request_irq; | |
1629 | + goto failed_remap_mem; | |
1631 | 1630 | } |
1632 | 1631 | |
1633 | 1632 | /* now that our ISR is registered, we can enable interrupts */ |
... | ... | @@ -1664,7 +1663,7 @@ |
1664 | 1663 | * with the nand subsystem */ |
1665 | 1664 | if (nand_scan_ident(&denali->mtd, LLD_MAX_FLASH_BANKS, NULL)) { |
1666 | 1665 | ret = -ENXIO; |
1667 | - goto failed_nand; | |
1666 | + goto failed_req_irq; | |
1668 | 1667 | } |
1669 | 1668 | |
1670 | 1669 | /* MTD supported page sizes vary by kernel. We validate our |
... | ... | @@ -1674,7 +1673,7 @@ |
1674 | 1673 | ret = -ENODEV; |
1675 | 1674 | printk(KERN_ERR "Spectra: device size not supported by this " |
1676 | 1675 | "version of MTD."); |
1677 | - goto failed_nand; | |
1676 | + goto failed_req_irq; | |
1678 | 1677 | } |
1679 | 1678 | |
1680 | 1679 | /* support for multi nand |
... | ... | @@ -1725,7 +1724,7 @@ |
1725 | 1724 | ECC_SECTOR_SIZE))) { |
1726 | 1725 | printk(KERN_ERR "Your NAND chip OOB is not large enough to" |
1727 | 1726 | " contain 8bit ECC correction codes"); |
1728 | - goto failed_nand; | |
1727 | + goto failed_req_irq; | |
1729 | 1728 | } else { |
1730 | 1729 | denali->nand.ecc.layout = &nand_8bit_oob; |
1731 | 1730 | denali->nand.ecc.bytes = ECC_8BITS; |
1732 | 1731 | |
1733 | 1732 | |
1734 | 1733 | |
1735 | 1734 | |
1736 | 1735 | |
1737 | 1736 | |
... | ... | @@ -1769,28 +1768,31 @@ |
1769 | 1768 | |
1770 | 1769 | if (nand_scan_tail(&denali->mtd)) { |
1771 | 1770 | ret = -ENXIO; |
1772 | - goto failed_nand; | |
1771 | + goto failed_req_irq; | |
1773 | 1772 | } |
1774 | 1773 | |
1775 | 1774 | ret = add_mtd_device(&denali->mtd); |
1776 | 1775 | if (ret) { |
1777 | 1776 | printk(KERN_ERR "Spectra: Failed to register" |
1778 | 1777 | " MTD device: %d\n", ret); |
1779 | - goto failed_nand; | |
1778 | + goto failed_req_irq; | |
1780 | 1779 | } |
1781 | 1780 | return 0; |
1782 | 1781 | |
1783 | - failed_nand: | |
1782 | +failed_req_irq: | |
1784 | 1783 | denali_irq_cleanup(dev->irq, denali); |
1785 | - failed_request_irq: | |
1786 | - iounmap(denali->flash_reg); | |
1784 | +failed_remap_mem: | |
1787 | 1785 | iounmap(denali->flash_mem); |
1788 | - failed_remap_csr: | |
1786 | +failed_remap_reg: | |
1787 | + iounmap(denali->flash_reg); | |
1788 | +failed_req_regions: | |
1789 | 1789 | pci_release_regions(dev); |
1790 | - failed_req_csr: | |
1790 | +failed_dma_map: | |
1791 | 1791 | pci_unmap_single(dev, denali->buf.dma_buf, DENALI_BUF_SIZE, |
1792 | 1792 | PCI_DMA_BIDIRECTIONAL); |
1793 | - failed_enable: | |
1793 | +failed_enable_dev: | |
1794 | + pci_disable_device(dev); | |
1795 | +failed_alloc_memery: | |
1794 | 1796 | kfree(denali); |
1795 | 1797 | return ret; |
1796 | 1798 | } |