Linux-ide Archive on lore.kernel.org
 help / color / Atom feed
From: Michael Schmitz <schmitzmic@gmail.com>
To: linux-m68k@vger.kernel.org, linux-ide@vger.kernel.org,
	b.zolnierkie@samsung.com
Cc: schmitz@debian.org, Michael Schmitz <schmitzmic@gmail.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>
Subject: [PATCH] ide: falconide: convert to platform driver
Date: Tue,  5 Nov 2019 19:37:52 +1300
Message-ID: <1572935872-28394-1-git-send-email-schmitzmic@gmail.com> (raw)
In-Reply-To: <4cb95fe6-c2ea-0195-9124-fc2e1223ab38@gmail.com>

With the introduction of a platform device for the Atari Falcon IDE
interface, the old Falcon IDE driver no longer loads (resource already
claimed by the platform device).

Convert falconide driver to use the same platform device that is used
by pata_falcon also.

Tested (as built-in driver) on my Atari Falcon.

Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
CC: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/ide/falconide.c |   45 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c
index a5a07cc..d6dd772 100644
--- a/drivers/ide/falconide.c
+++ b/drivers/ide/falconide.c
@@ -15,6 +15,7 @@
 #include <linux/blkdev.h>
 #include <linux/ide.h>
 #include <linux/init.h>
+#include <linux/platform_device.h>
 
 #include <asm/setup.h>
 #include <asm/atarihw.h>
@@ -23,6 +24,7 @@
 #include <asm/ide.h>
 
 #define DRV_NAME "falconide"
+#define DRV_VERSION "0.1.0"
 
     /*
      *  Base of the IDE interface
@@ -114,18 +116,18 @@ static void falconide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
 	.chipset		= ide_generic,
 };
 
-static void __init falconide_setup_ports(struct ide_hw *hw)
+static void __init falconide_setup_ports(struct ide_hw *hw, unsigned long base)
 {
 	int i;
 
 	memset(hw, 0, sizeof(*hw));
 
-	hw->io_ports.data_addr = ATA_HD_BASE;
+	hw->io_ports.data_addr = base;
 
 	for (i = 1; i < 8; i++)
-		hw->io_ports_array[i] = ATA_HD_BASE + 1 + i * 4;
+		hw->io_ports_array[i] = base + 1 + i * 4;
 
-	hw->io_ports.ctl_addr = ATA_HD_BASE + ATA_HD_CONTROL;
+	hw->io_ports.ctl_addr = base + ATA_HD_CONTROL;
 
 	hw->irq = IRQ_MFP_IDE;
 }
@@ -134,23 +136,29 @@ static void __init falconide_setup_ports(struct ide_hw *hw)
      *  Probe for a Falcon IDE interface
      */
 
-static int __init falconide_init(void)
+static int __init falconide_init(struct platform_device *pdev)
 {
+	struct resource *res;
 	struct ide_host *host;
 	struct ide_hw hw, *hws[] = { &hw };
+	unsigned long base;
 	int rc;
 
-	if (!MACH_IS_ATARI || !ATARIHW_PRESENT(IDE))
-		return -ENODEV;
+	dev_info(&pdev->dev, "Atari Falcon IDE controller\n");
 
-	printk(KERN_INFO "ide: Falcon IDE controller\n");
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res)
+		return -ENODEV;
 
-	if (!request_mem_region(ATA_HD_BASE, 0x40, DRV_NAME)) {
-		printk(KERN_ERR "%s: resources busy\n", DRV_NAME);
+	if (!devm_request_mem_region(&pdev->dev, res->start,
+				     resource_size(res), DRV_NAME)) {
+		dev_err(&pdev->dev, "resources busy\n");
 		return -EBUSY;
 	}
 
-	falconide_setup_ports(&hw);
+	base = (unsigned long)res->start;
+
+	falconide_setup_ports(&hw, base);
 
 	host = ide_host_alloc(&falconide_port_info, hws, 1);
 	if (host == NULL) {
@@ -169,10 +177,21 @@ static int __init falconide_init(void)
 err_free:
 	ide_host_free(host);
 err:
-	release_mem_region(ATA_HD_BASE, 0x40);
+	release_mem_region(res->start, resource_size(res));
 	return rc;
 }
 
-module_init(falconide_init);
+static struct platform_driver ide_falcon_driver = {
+	.driver   = {
+		.name	= "atari-falcon-ide",
+	},
+};
+
+module_platform_driver_probe(ide_falcon_driver, falconide_init);
+
 
+MODULE_AUTHOR("Geert Uytterhoeven");
+MODULE_DESCRIPTION("low-level driver for Atari Falcon IDE");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:atari-falcon-ide");
+MODULE_VERSION(DRV_VERSION);
-- 
1.7.0.4


  reply index

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-26  3:54 [PATCH RESEND v2 0/2] Convert Atari Falcon IDE driver to platform device Michael Schmitz
2019-09-26  3:54 ` [PATCH RESEND v2 1/2] m68k/atari: add platform device for Falcon IDE port Michael Schmitz
2019-11-04 10:56   ` Geert Uytterhoeven
2019-11-04 21:09     ` Michael Schmitz
2019-11-05  6:37       ` Michael Schmitz [this message]
2019-11-05  8:11         ` [PATCH] ide: falconide: convert to platform driver Geert Uytterhoeven
2019-11-05 18:31           ` Michael Schmitz
2019-11-05 18:46             ` Geert Uytterhoeven
2019-11-05 20:02               ` Michael Schmitz
2019-11-05 21:13                 ` Michael Schmitz
2019-11-05 21:43                   ` Geert Uytterhoeven
2019-11-06  1:35                     ` Michael Schmitz
2019-11-05  6:43       ` [PATCH RESEND v2 1/2] m68k/atari: add platform device for Falcon IDE port Michael Schmitz
2019-09-26  3:54 ` [PATCH RESEND v2 2/2] drivers/ata: convert pata_falcon to arch platform device Michael Schmitz
2019-11-04 10:58   ` Geert Uytterhoeven
2019-10-25 20:33 ` [PATCH RESEND v2 0/2] Convert Atari Falcon IDE driver to " Jens Axboe
2019-10-26 18:17   ` Geert Uytterhoeven
2019-10-28  7:03     ` Michael Schmitz
2019-11-04 11:04       ` Geert Uytterhoeven
2019-11-04 19:17         ` Michael Schmitz
2019-11-04 20:06           ` Geert Uytterhoeven
2019-11-04 21:10           ` John Paul Adrian Glaubitz
2019-11-04 21:21             ` Michael Schmitz
2019-11-04 21:42               ` John Paul Adrian Glaubitz
2019-11-05  6:57                 ` Michael Schmitz
2019-11-06  1:34                   ` Michael Schmitz
2019-11-06  2:47 ` [PATCH v3] m68k/atari: convert legacy Falcon IDE driver to platform driver Michael Schmitz

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1572935872-28394-1-git-send-email-schmitzmic@gmail.com \
    --to=schmitzmic@gmail.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=geert@linux-m68k.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=schmitz@debian.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-ide Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-ide/0 linux-ide/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-ide linux-ide/ https://lore.kernel.org/linux-ide \
		linux-ide@vger.kernel.org
	public-inbox-index linux-ide

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-ide


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git