watchdog: sp5100_tco: Clean up sp5100_tco_setupdevice

"Linux Kernel Mailing List" <[email protected]>
Newsgroups gmane.linux.kernel.commits.head
Message-ID <[email protected]>
Web:        https://git.kernel.org/torvalds/c/e189410cbef1374ec29d42b72df0d58d5c7e193c
Commit:     e189410cbef1374ec29d42b72df0d58d5c7e193c
Parent:     23dfe140057baa165daebadf8f4600e3603e0954
Refname:    refs/heads/master
Author:     Guenter Roeck <[email protected]>
AuthorDate: Sun Dec 24 13:04:10 2017 -0800
Committer:  Wim Van Sebroeck <[email protected]>
CommitDate: Sun Jan 21 12:56:35 2018 +0100

    watchdog: sp5100_tco: Clean up sp5100_tco_setupdevice
    
    There are too many unnecessary goto statements in sp5100_tco_setupdevice().
    Rearrange the code and limit goto statements to error handling.
    
    Cc: Zoltán Böszörményi <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
---
 drivers/watchdog/sp5100_tco.c | 62 ++++++++++++++++++++-----------------------
 1 file changed, 29 insertions(+), 33 deletions(-)

diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
index 0e816f2cdb07..5a13ab483c50 100644
--- a/drivers/watchdog/sp5100_tco.c
+++ b/drivers/watchdog/sp5100_tco.c
@@ -396,48 +396,44 @@ static int sp5100_tco_setupdevice(void)
 	pr_debug("Got 0x%04x from indirect I/O\n", val);
 
 	/* Check MMIO address conflict */
-	if (request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
-								dev_name))
-		goto setup_wdt;
-	else
+	if (!request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
+					  dev_name)) {
 		pr_debug("MMIO address 0x%04x already in use\n", val);
+		/*
+		 * Secondly, Find the watchdog timer MMIO address
+		 * from SBResource_MMIO register.
+		 */
+		if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
+			/* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
+			pci_read_config_dword(sp5100_tco_pci,
+					      SP5100_SB_RESOURCE_MMIO_BASE,
+					      &val);
+		} else {
+			/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg: 24h) */
+			val = sp5100_tco_read_pm_reg32(SB800_PM_ACPI_MMIO_EN);
+		}
 
-	/*
-	 * Secondly, Find the watchdog timer MMIO address
-	 * from SBResource_MMIO register.
-	 */
-	if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
-		/* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
-		pci_read_config_dword(sp5100_tco_pci,
-				      SP5100_SB_RESOURCE_MMIO_BASE, &val);
-	} else {
-		/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg: 24h) */
-		val = sp5100_tco_read_pm_reg32(SB800_PM_ACPI_MMIO_EN);
-	}
-
-	/* The SBResource_MMIO is enabled and mapped memory space? */
-	if ((val & (SB800_ACPI_MMIO_DECODE_EN | SB800_ACPI_MMIO_SEL)) ==
+		/* The SBResource_MMIO is enabled and mapped memory space? */
+		if ((val & (SB800_ACPI_MMIO_DECODE_EN | SB800_ACPI_MMIO_SEL)) !=
 						  SB800_ACPI_MMIO_DECODE_EN) {
+			pr_notice("failed to find MMIO address, giving up.\n");
+			ret = -ENODEV;
+			goto unreg_region;
+		}
 		/* Clear unnecessary the low twelve bits */
 		val &= ~0xFFF;
 		/* Add the Watchdog Timer offset to base address. */
 		val += SB800_PM_WDT_MMIO_OFFSET;
 		/* Check MMIO address conflict */
-		if (request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
-								   dev_name)) {
-			pr_debug("Got 0x%04x from SBResource_MMIO register\n",
-				val);
-			goto setup_wdt;
-		} else
+		if (!request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
+						  dev_name)) {
 			pr_debug("MMIO address 0x%04x already in use\n", val);
-	} else
-		pr_debug("SBResource_MMIO is disabled(0x%04x)\n", val);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.