Commit 5c0eb90094d64d56df8be23bb75d48e63c96c180

Authored by Chuanxiao Dong
Committed by David Woodhouse
1 parent e8a89cebdb

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 }