All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linux-ide@vger.kernel.org
Subject: Re: H8/300 target support patch
Date: Fri, 20 Feb 2004 21:28:24 +0900	[thread overview]
Message-ID: <m2k72i2avr.wl%ysato@users.sourceforge.jp> (raw)
In-Reply-To: <200402191734.49496.bzolnier@elka.pw.edu.pl>

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

At Thu, 19 Feb 2004 17:34:49 +0100,
Bartlomiej Zolnierkiewicz wrote:
> 
> 
> Hi,
> 
> Can you send updated patch?
> I am lost in incremental changes. :-)
> 
> Thanks.
> 

Difference with linux-2.6.3.

-- 
Yoshinori Sato
<ysato@users.sourceforge.jp>


[-- Attachment #2: linux-2.6.3-h8300-ide.diff --]
[-- Type: application/octet-stream, Size: 8680 bytes --]

diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/Makefile linux-2.6.3-h8300/drivers/ide/Makefile
--- linux-2.6.3/drivers/ide/Makefile		2004-02-20 01:08:02.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/Makefile	2004-02-20 17:42:40.000000000 +0900
@@ -46,5 +46,5 @@
 obj-$(CONFIG_BLK_DEV_IDETAPE)		+= ide-tape.o
 obj-$(CONFIG_BLK_DEV_IDEFLOPPY)		+= ide-floppy.o
 
-obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/ arm/
+obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/ arm/ h8300/
 obj-$(CONFIG_BLK_DEV_HD)		+= legacy/
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/h8300/Makefile linux-2.6.3-h8300/drivers/ide/h8300/Makefile
--- linux-2.6.3/drivers/ide/h8300/Makefile		1970-01-01 09:00:00.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/h8300/Makefile	2003-08-27 22:59:37.000000000 +0900
@@ -0,0 +1,3 @@
+obj-$(CONFIG_H8300H_H8MAX) := h8max_ide.o
+obj-$(CONFIG_H8300H_AKI3068NET) := aki3068_ide.o
+obj-m		:=
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/h8300/aki3068_ide.c linux-2.6.3-h8300/drivers/ide/h8300/aki3068_ide.c
--- linux-2.6.3/drivers/ide/h8300/aki3068_ide.c		1970-01-01 09:00:00.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/h8300/aki3068_ide.c	2004-02-20 18:11:36.000000000 +0900
@@ -0,0 +1,72 @@
+/****************************************************************************/
+/*
+ *  linux/drivers/ide/h8300/aki3068_ide.c
+ *  aki3068net IDE I/F support
+ *
+ *  Copyright (C) 2003 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ *  This file is subject to the terms and conditions of the GNU General Public
+ *  License.  See the file COPYING in the main directory of this archive for
+ *  more details.
+ *
+ */
+/****************************************************************************/
+
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <linux/interrupt.h>
+#include <linux/blkdev.h>
+#include <linux/hdreg.h>
+#include <linux/ide.h>
+#include <linux/init.h>
+#include <asm/irq.h>
+#include <asm/regs306x.h>
+
+#include "h8_ide_iops.h"
+
+/* IDE I/F configuration */
+#define IDE_BASE CONFIG_H8300_IDE_BASE
+#define IDE_CTRL CONFIG_H8300_IDE_ALT
+#define IDE_IRQ  (EXT_IRQ0 + CONFIG_H8300_IDE_IRQNO)
+
+#define IDE_DATA	0x00
+#define IDE_ERROR	0x02
+#define IDE_NSECTOR	0x04
+#define IDE_SECTOR	0x06
+#define IDE_LCYL	0x08
+#define IDE_HCYL	0x0A
+#define IDE_SELECT	0x0C
+#define IDE_STATUS	0x0E
+
+static void __init h8300_ide_ports(hw_regs_t *hw, unsigned long ioaddr)
+{
+	hw->io_ports[IDE_DATA_OFFSET]	 = ioaddr + IDE_DATA;
+	hw->io_ports[IDE_ERROR_OFFSET]	 = ioaddr + IDE_ERROR;
+	hw->io_ports[IDE_NSECTOR_OFFSET] = ioaddr + IDE_NSECTOR;
+	hw->io_ports[IDE_SECTOR_OFFSET]	 = ioaddr + IDE_SECTOR;
+	hw->io_ports[IDE_LCYL_OFFSET]	 = ioaddr + IDE_LCYL;
+	hw->io_ports[IDE_HCYL_OFFSET]	 = ioaddr + IDE_HCYL;
+	hw->io_ports[IDE_SELECT_OFFSET]	 = ioaddr + IDE_SELECT;
+	hw->io_ports[IDE_STATUS_OFFSET]	 = ioaddr + IDE_STATUS;
+}
+
+void __init h8300_ide_init(void)
+{
+	hw_regs_t hw;
+	ide_hwif_t *hwif;
+	volatile unsigned char *abwcr = (volatile unsigned char *)ABWCR;
+	volatile unsigned char *cscr = (volatile unsigned char *)CSCR;
+	*abwcr &= ~((1 << ((IDE_BASE >> 21) & 7)) | (1 << ((IDE_CTRL >> 21) & 7)));
+	*cscr  |= (1 << ((IDE_BASE >> 21) & 7)) | (1 << ((IDE_CTRL >> 21) & 7)) | 0x0f;
+
+	memset(&hw,0,sizeof(hw));
+
+	h8300_ide_ports(&hw, IDE_BASE);
+	hw.io_ports[IDE_CONTROL_OFFSET] = IDE_CTRL;
+	hw.irq = IDE_IRQ;
+
+	if (ide_register_hw(&hw, &hwif) != -1)
+		h8300_hwif_iops(hwif);
+}
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/h8300/h8_ide_iops.h linux-2.6.3-h8300/drivers/ide/h8300/h8_ide_iops.h
--- linux-2.6.3/drivers/ide/h8300/h8_ide_iops.h		1970-01-01 09:00:00.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/h8300/h8_ide_iops.h	2004-02-20 17:40:15.000000000 +0900
@@ -0,0 +1,66 @@
+/* H8/300 IDE I/F I/O operations */
+
+#include <asm/io.h>
+
+static void __ide_outb(u8 d, unsigned long a)
+{
+	outb(d,a); 
+}
+
+static void __ide_outbsync(ide_drive_t *drive, u8 d, unsigned long a)
+{
+	outb(d,a); 
+}
+
+static u8 __ide_inb(unsigned long a)
+{
+	return inb(a);
+}
+
+static void __ide_outw(u16 d, unsigned long a)
+{
+	return outw(d,a);
+}
+
+static u16 __ide_inw(unsigned long a)
+{
+	return inw(a);
+}
+
+static void __ide_outl(u32 d, unsigned long a)
+{
+}
+
+static u32 __ide_inl(unsigned long a)
+{
+	return 0xffffffffUL;
+}
+
+static void __ide_outsw(unsigned long addr, void *buf, u32 len)
+{
+	unsigned short *bp = (unsigned short *)buf;
+	while(len--)
+		outw(*bp++,addr);
+}
+
+static void __ide_insw(unsigned long addr, void *buf, u32 len)
+{
+	unsigned short *bp = (unsigned short *)buf;
+	while(len--)
+		*bp++ = inw(addr);
+}
+
+static void __init h8300_hwif_iops(ide_hwif_t *hwif)
+{
+	hwif->OUTB 	= __ide_outb;
+	hwif->OUTBSYNC	= __ide_outbsync;
+	hwif->OUTW	= __ide_outw;
+	hwif->OUTL	= __ide_outl;
+	hwif->OUTSW	= __ide_outsw;
+	hwif->OUTSL	= NULL;
+	hwif->INB	= __ide_inb;
+	hwif->INW	= __ide_inw;
+	hwif->INL	= __ide_inl;
+	hwif->INSW	= __ide_insw;
+	hwif->INSL	= NULL;
+}
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/h8300/h8max_ide.c linux-2.6.3-h8300/drivers/ide/h8300/h8max_ide.c
--- linux-2.6.3/drivers/ide/h8300/h8max_ide.c		1970-01-01 09:00:00.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/h8300/h8max_ide.c	2004-02-20 18:11:36.000000000 +0900
@@ -0,0 +1,67 @@
+/****************************************************************************/
+/*
+ *  linux/drivers/ide/h8300/h8max_ide.c
+ *  H8MAX IDE Interface support
+ *
+ *  Copyright (C) 2003 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ *  This file is subject to the terms and conditions of the GNU General Public
+ *  License.  See the file COPYING in the main directory of this archive for
+ *  more details.
+ *
+ */
+/****************************************************************************/
+
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <linux/interrupt.h>
+#include <linux/blkdev.h>
+#include <linux/hdreg.h>
+#include <linux/ide.h>
+#include <linux/init.h>
+#include <asm/irq.h>
+
+#include "h8_ide_iops.h"
+
+/* IDE I/F configuration */
+#define IDE_BASE 0x200000
+#define IDE_CTRL 0x60000c
+#define IDE_IRQ  EXT_IRQ5
+
+#define IDE_DATA	0x00
+#define IDE_ERROR	0x02
+#define IDE_NSECTOR	0x04
+#define IDE_SECTOR	0x06
+#define IDE_LCYL	0x08
+#define IDE_HCYL	0x0A
+#define IDE_SELECT	0x0C
+#define IDE_STATUS	0x0E
+
+static void __init h8300_ide_ports(hw_regs_t *hw, unsigned long ioaddr)
+{
+	hw->io_ports[IDE_DATA_OFFSET]	 = ioaddr + IDE_DATA;
+	hw->io_ports[IDE_ERROR_OFFSET]	 = ioaddr + IDE_ERROR;
+	hw->io_ports[IDE_NSECTOR_OFFSET] = ioaddr + IDE_NSECTOR;
+	hw->io_ports[IDE_SECTOR_OFFSET]	 = ioaddr + IDE_SECTOR;
+	hw->io_ports[IDE_LCYL_OFFSET]	 = ioaddr + IDE_LCYL;
+	hw->io_ports[IDE_HCYL_OFFSET]	 = ioaddr + IDE_HCYL;
+	hw->io_ports[IDE_SELECT_OFFSET]	 = ioaddr + IDE_SELECT;
+	hw->io_ports[IDE_STATUS_OFFSET]	 = ioaddr + IDE_STATUS;
+}
+
+void __init h8300_ide_init(void)
+{
+	hw_regs_t hw;
+	ide_hwif_t *hwif;
+
+	memset(&hw,0,sizeof(hw));
+
+	h8300_ide_ports(&hw, IDE_BASE);
+	hw.io_ports[IDE_CONTROL_OFFSET] = IDE_CTRL;
+	hw.irq = IDE_IRQ;
+
+	if (ide_register_hw(&hw, &hwif) != -1)
+		h8300_hwif_iops(hwif);
+}
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/ide-probe.c linux-2.6.3-h8300/drivers/ide/ide-probe.c
--- linux-2.6.3/drivers/ide/ide-probe.c	2004-02-11 23:54:31.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/ide-probe.c	2004-02-20 17:45:25.000000000 +0900
@@ -983,7 +983,7 @@
 	unsigned int index;
 	ide_hwgroup_t *hwgroup;
 	ide_hwif_t *match = NULL;
-
+	int ide_regs_gap;
 
 	BUG_ON(in_interrupt());
 	BUG_ON(irqs_disabled());	
@@ -1102,10 +1102,11 @@
 		spin_unlock_irq(&ide_lock);
 	}
 
+	ide_regs_gap = hwif->io_ports[IDE_ERROR_OFFSET] - hwif->io_ports[IDE_DATA_OFFSET];
 #if !defined(__mc68000__) && !defined(CONFIG_APUS) && !defined(__sparc__)
 	printk("%s at 0x%03lx-0x%03lx,0x%03lx on irq %d", hwif->name,
 		hwif->io_ports[IDE_DATA_OFFSET],
-		hwif->io_ports[IDE_DATA_OFFSET]+7,
+		hwif->io_ports[IDE_DATA_OFFSET] + ide_regs_gap * 8 - 1,
 		hwif->io_ports[IDE_CONTROL_OFFSET], hwif->irq);
 #elif defined(__sparc__)
 	printk("%s at 0x%03lx-0x%03lx,0x%03lx on irq %s", hwif->name,
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/ide.c linux-2.6.3-h8300/drivers/ide/ide.c
--- linux-2.6.3/drivers/ide/ide.c	2004-02-20 01:08:02.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/ide.c	2004-02-20 17:46:52.000000000 +0900
@@ -2239,6 +2239,12 @@
 		pnpide_init(1);
 	}
 #endif /* CONFIG_BLK_DEV_IDEPNP */
+#if defined(__H8300H__) || defined(__H8300S__)
+        {
+		extern void h8300_ide_init(void);
+		h8300_ide_init();
+	}
+#endif /* defined(__H8300H__) || defined(__H8300S__) */
 }
 
 /*

  reply	other threads:[~2004-02-20 12:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-15  6:05 H8/300 target support patch Yoshinori Sato
2004-02-15 14:40 ` Bartlomiej Zolnierkiewicz
2004-02-16 16:09   ` Yoshinori Sato
2004-02-16 16:40     ` Bartlomiej Zolnierkiewicz
2004-02-16 22:07       ` Benjamin Herrenschmidt
2004-02-16 22:09     ` Benjamin Herrenschmidt
2004-02-17 11:33       ` Yoshinori Sato
2004-02-17 12:55         ` Benjamin Herrenschmidt
2004-02-19 16:12           ` Yoshinori Sato
2004-02-19 16:34             ` Bartlomiej Zolnierkiewicz
2004-02-20 12:28               ` Yoshinori Sato [this message]
2004-02-20 15:25                 ` Bartlomiej Zolnierkiewicz
2004-02-20 17:58                   ` Yoshinori Sato
2004-02-20 18:42                     ` Bartlomiej Zolnierkiewicz
2004-02-22 16:30                       ` Yoshinori Sato
2004-02-22 17:08                         ` Bartlomiej Zolnierkiewicz
2004-02-22 17:28                           ` Bartlomiej Zolnierkiewicz
2004-02-26 16:46                             ` Yoshinori Sato
2004-02-26 19:26                               ` Bartlomiej Zolnierkiewicz
2004-02-28 17:02                                 ` Yoshinori Sato
2004-02-28 17:55                                   ` Bartlomiej Zolnierkiewicz

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=m2k72i2avr.wl%ysato@users.sourceforge.jp \
    --to=ysato@users.sourceforge.jp \
    --cc=B.Zolnierkiewicz@elka.pw.edu.pl \
    --cc=benh@kernel.crashing.org \
    --cc=linux-ide@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.