public inbox for linux-m68k@lists.linux-m68k.org
 help / color / mirror / Atom feed
From: Michael Schmitz <schmitzmic@gmail.com>
To: linux-m68k@vger.kernel.org
Cc: geert@linux-m68k.org, debian-68k@lists.debian.org,
	kernel@mkarcher.dialup.fu-berlin.de,
	Michael Schmitz <schmitzmic@gmail.com>
Subject: [PATCH 7/8] ax88796: Add X-Surf 100 zorro driver providing an ax88796 platform device
Date: Tue, 17 Nov 2015 12:33:16 +1300	[thread overview]
Message-ID: <1447716797-20906-8-git-send-email-schmitzmic@gmail.com> (raw)
In-Reply-To: <1447716797-20906-1-git-send-email-schmitzmic@gmail.com>

Add platform device driver to populate the ax88796 platform data from
information provided by the XSurf100 zorro device driver.
This driver will have to be loaded before loading the ax88796 module,
or compiled as built-in.

Signed-off-by: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>
Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
---
 drivers/net/ethernet/8390/Kconfig    |   10 ++++-
 drivers/net/ethernet/8390/Makefile   |    1 +
 drivers/net/ethernet/8390/xsurf100.c |   71 ++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+), 1 deletions(-)
 create mode 100644 drivers/net/ethernet/8390/xsurf100.c

diff --git a/drivers/net/ethernet/8390/Kconfig b/drivers/net/ethernet/8390/Kconfig
index edf7225..2cb6a32 100644
--- a/drivers/net/ethernet/8390/Kconfig
+++ b/drivers/net/ethernet/8390/Kconfig
@@ -30,7 +30,7 @@ config PCMCIA_AXNET
 
 config AX88796
 	tristate "ASIX AX88796 NE2000 clone support"
-	depends on (ARM || MIPS || SUPERH)
+	depends on (ARM || MIPS || SUPERH || AMIGA)
 	select CRC32
 	select PHYLIB
 	select MDIO_BITBANG
@@ -45,6 +45,14 @@ config AX88796_93CX6
 	---help---
 	  Select this if your platform comes with an external 93CX6 eeprom.
 
+config XSURF100
+	tristate "XSurf 100 support"
+	depends on ZORRO
+	depends on AX88796
+	---help---
+	  This driver is for the Individual Computers X-Surf 100 Ethernet
+          card. If you have such a card, say Y. Otherwise, say N.
+
 config HYDRA
 	tristate "Hydra support"
 	depends on ZORRO
diff --git a/drivers/net/ethernet/8390/Makefile b/drivers/net/ethernet/8390/Makefile
index ff3b318..c2dab5c 100644
--- a/drivers/net/ethernet/8390/Makefile
+++ b/drivers/net/ethernet/8390/Makefile
@@ -15,4 +15,5 @@ obj-$(CONFIG_PCMCIA_PCNET) += pcnet_cs.o 8390.o
 obj-$(CONFIG_STNIC) += stnic.o 8390.o
 obj-$(CONFIG_ULTRA) += smc-ultra.o 8390.o
 obj-$(CONFIG_WD80x3) += wd.o 8390.o
+obj-$(CONFIG_XSURF100) += xsurf100.o
 obj-$(CONFIG_ZORRO8390) += zorro8390.o 8390.o
diff --git a/drivers/net/ethernet/8390/xsurf100.c b/drivers/net/ethernet/8390/xsurf100.c
new file mode 100644
index 0000000..3c34b04
--- /dev/null
+++ b/drivers/net/ethernet/8390/xsurf100.c
@@ -0,0 +1,71 @@
+#include <linux/module.h>
+#include <linux/netdevice.h>
+#include <linux/platform_device.h>
+#include <linux/zorro.h>
+#include <net/ax88796.h>
+#include <asm/amigaints.h>
+
+#define ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF100 ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x64, 0)
+
+#define XS1000_8390_BASE 0x800
+
+static int xsurf100_probe(struct zorro_dev *zdev, const struct zorro_device_id *ent)
+{
+	struct platform_device *pdev;
+	struct ax_plat_data ax88796_data;
+	struct resource res[2] = {
+		DEFINE_RES_IRQ(IRQ_AMIGA_PORTS),
+		DEFINE_RES_IO(zdev->resource.start + XS1000_8390_BASE, 4 * 0x20)
+	};
+	int reg;
+	u32 reg_offsets[32];
+
+	for (reg = 0; reg < 0x20; reg++)
+		reg_offsets[reg] = 4;
+
+	ax88796_data.flags = AXFLG_HAS_EEPROM;
+	ax88796_data.wordlength = 2;
+	ax88796_data.dcr_val = 0x48;
+	ax88796_data.rcr_val = 0x40;
+	ax88796_data.reg_offsets = reg_offsets;
+
+	// TODO: xsurf100 specific accelerated data exchange
+
+	pdev = platform_device_register_resndata(
+		&zdev->dev, "ax88796", zdev->slotaddr,
+		res, 2,
+		&ax88796_data, sizeof ax88796_data);
+
+	// TODO: NULL check
+	zorro_set_drvdata(zdev, pdev);
+	return 0;
+}
+
+static void xsurf100_remove(struct zorro_dev *zdev)
+{
+	struct platform_device *pdev;
+
+	pdev = zorro_get_drvdata(zdev);
+
+	platform_device_unregister(pdev);
+}
+
+static struct zorro_device_id xsurf100_zorro_tbl[] = {
+       { ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF100, },
+       { 0 }
+};
+
+MODULE_DEVICE_TABLE(zorro, xsurf100_zorro_tbl);
+
+static struct zorro_driver xsurf100_driver = {
+       .name           = "xsurf100",
+       .id_table       = xsurf100_zorro_tbl,
+       .probe          = xsurf100_probe,
+       .remove         = xsurf100_remove,
+};
+
+module_driver(xsurf100_driver, zorro_register_driver, zorro_unregister_driver);
+
+MODULE_DESCRIPTION("X-Surf 100 driver");
+MODULE_AUTHOR("Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>");
+MODULE_LICENSE("GPL v2");
-- 
1.7.0.4

  parent reply	other threads:[~2015-11-16 23:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-16 23:33 [PATCH 0/8] Amiga XSurf100 patch series, to be submitted to linux-net Michael Schmitz
2015-11-16 23:33 ` [PATCH 1/8] aX88796: Fix MAC address reading Michael Schmitz
2015-11-16 23:33 ` [PATCH 2/8] ax88796: Attach MII bus only when open Michael Schmitz
2015-11-16 23:33 ` [PATCH 3/8] ax88796: Move mii support functions upwards to prevent need of forward declaration Michael Schmitz
2015-11-16 23:33 ` [PATCH 4/8] ax88796: Do not free IRQ that did not get requested Michael Schmitz
2015-11-16 23:33 ` [PATCH 5/8] ax88796: Add block_input/output hooks to ax_plat_data Michael Schmitz
2015-11-16 23:33 ` [PATCH 6/8] ax88796: add interrupt status callback to platform data Michael Schmitz
2015-11-16 23:33 ` Michael Schmitz [this message]
2015-11-17  8:16   ` [PATCH 7/8] ax88796: Add X-Surf 100 zorro driver providing an ax88796 platform device Geert Uytterhoeven
2015-11-17 17:59     ` Michael Karcher
2015-11-17 20:01       ` Geert Uytterhoeven
2015-11-16 23:33 ` [PATCH 8/8] ax88796: use interrupt status callback for XSurf100 driver Michael Schmitz
2015-11-17  8:18 ` [PATCH 0/8] Amiga XSurf100 patch series, to be submitted to linux-net Geert Uytterhoeven
2015-11-17 18:16   ` Michael Karcher
2015-11-17 20:02     ` Geert Uytterhoeven
2015-11-18  1:52   ` Michael Schmitz
2015-11-18  8:09     ` Geert Uytterhoeven

Reply instructions:

You may reply publicly 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=1447716797-20906-8-git-send-email-schmitzmic@gmail.com \
    --to=schmitzmic@gmail.com \
    --cc=debian-68k@lists.debian.org \
    --cc=geert@linux-m68k.org \
    --cc=kernel@mkarcher.dialup.fu-berlin.de \
    --cc=linux-m68k@vger.kernel.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox