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: Mon, 23 Feb 2004 01:30:05 +0900	[thread overview]
Message-ID: <m2llmv9iwi.wl%ysato@users.sourceforge.jp> (raw)
In-Reply-To: <200402201942.00232.bzolnier@elka.pw.edu.pl>

At Fri, 20 Feb 2004 19:42:00 +0100,
Bartlomiej Zolnierkiewicz wrote:
> 
> On Friday 20 of February 2004 18:58, Yoshinori Sato wrote:
> 
> > > - added #if !defined(__H8300H__) to ide-proc.c
> > >   (only place where ->OUTL is used, ->INL is unused in generic IDE code)
> >
> > "__H8300S__" becomes the same condition, too.
> 
> Oh yes, it should be CONFIG_H8300.
> 
> > > - __ide_outl() and __ide_inl() removed
> > > - redundant includes removed
> > > - init driver through initcall (so no need to make changes in ide.c)
> >
> > It seems to have been overwritten with default_hwif_iops
> > setting of h8300_hwif_iops in module_init.
> 
> Yep, h8300_ide_init() still should be called from ide.c.
> (because ide_register_hw() checks "initialization" flag etc.)
> 

I corrected it to initialize it with ide_init_default_hwifs.
A correction of ide.c becomes needless.

Because h8300-iops.c might change every a target, 
I arranged with the other directory.

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	2004-02-23 00:58:43.000000000 +0900
@@ -0,0 +1,2 @@
+obj-$(CONFIG_H8300H_H8MAX) := h8300-iops.o
+obj-$(CONFIG_H8300H_AKI3068NET) := h8300-iops.o
diff -X .exclude-diff -Nru linux-2.6.3/drivers/ide/h8300/h8300-iops.c linux-2.6.3-h8300/drivers/ide/h8300/h8300-iops.c
--- linux-2.6.3/drivers/ide/h8300/h8300-iops.c	1970-01-01 09:00:00.000000000 +0900
+++ linux-2.6.3-h8300/drivers/ide/h8300/h8300-iops.c	2004-02-23 00:53:24.000000000 +0900
@@ -0,0 +1,107 @@
+/* H8/300 IDE I/F I/O operations */
+
+/*
+ support target
+
+ AE-3068/AE-3069 + IDE Expand
+ H8MAX
+*/
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/ide.h>
+#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;
+}
+
+void __init ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
+				unsigned long ctrl_port, int *irq)
+{
+	hw->io_ports[IDE_DATA_OFFSET]	 = data_port + IDE_DATA;
+	hw->io_ports[IDE_ERROR_OFFSET]	 = data_port + IDE_ERROR;
+	hw->io_ports[IDE_NSECTOR_OFFSET] = data_port + IDE_NSECTOR;
+	hw->io_ports[IDE_SECTOR_OFFSET]	 = data_port + IDE_SECTOR;
+	hw->io_ports[IDE_LCYL_OFFSET]	 = data_port + IDE_LCYL;
+	hw->io_ports[IDE_HCYL_OFFSET]	 = data_port + IDE_HCYL;
+	hw->io_ports[IDE_SELECT_OFFSET]	 = data_port + IDE_SELECT;
+	hw->io_ports[IDE_STATUS_OFFSET]	 = data_port + IDE_STATUS;
+	hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
+	hw->irq = *irq;
+}
+
+void __init ide_init_default_hwifs(void)
+{
+	hw_regs_t hw;
+	ide_hwif_t *hwif;
+	int irq = IDE_IRQ;
+
+	H8300_IDE_SETUP();
+
+	memset(&hw,0,sizeof(hw));
+
+	ide_init_hwif_ports(&hw, IDE_BASE,IDE_CTRL,&irq);
+	ide_register_hw(&hw, &hwif);
+	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;
-
+	unsigned int ide_regs_gap;	/* needed for H8/300 */
 
 	BUG_ON(in_interrupt());
 	BUG_ON(irqs_disabled());	
@@ -1102,11 +1102,12 @@
 		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-proc.c linux-2.6.3-h8300/drivers/ide/ide-proc.c
--- linux-2.6.3/drivers/ide/ide-proc.c	2004-02-20 15:49:23.108548664 +0100
+++ linux-2.6.3-h8300/drivers/ide/ide-proc.c	2004-02-20 15:50:25.580051552 +0100
@@ -239,8 +239,7 @@ static int proc_ide_write_config
 					}
 #endif	/* CONFIG_BLK_DEV_IDEPCI */
 				} else {	/* not pci */
-#if !defined(__mc68000__) && !defined(CONFIG_APUS)
-
+#if !defined(__mc68000__) && !defined(CONFIG_APUS) && !defined(__H8300H__) && !defined(__H8300S__)
 /*
  * Geert Uytterhoeven
  *
@@ -268,7 +267,7 @@ static int proc_ide_write_config
 						case 8:	hwif->OUTL(val, reg);
 							break;
 					}
-#endif /* !__mc68000__ && !CONFIG_APUS */
+#endif /* !__mc68000__ && !CONFIG_APUS !__H8300H__ && !__H8300S__ */
 				}
 			}
 		}
diff -X .exclude-diff -Nru linux-2.6.3/include/asm-h8300/ide.h linux-2.6.3-h8300/include/asm-h8300/ide.h
--- linux-2.6.3/include/asm-h8300/ide.h	19 Feb 2004 17:43:11 -0000	1.5
+++ linux-2.6.3-h8300/include/asm-h8300/ide.h	22 Feb 2004 16:15:49 -0000
@@ -16,19 +16,26 @@
 #ifdef __KERNEL__
 /****************************************************************************/
 
-void h8300_ide_print_resource(char *name, hw_regs_t *hw);
-static inline int ide_default_irq(unsigned long base) { return 0; };
-static inline unsigned long ide_default_io_base(int index) { return 0; };
+#define H8300_IDE_DEFINE
+#include <asm/machine-depend.h>
+#undef  H8300_IDE_DEFINE
 
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-	 unsigned long ctrl_port, int *irq)
+static __inline__ int ide_default_irq(unsigned long base)
 {
-}
+	return IDE_IRQ;
+};
 
-
-static inline void ide_init_default_hwifs(void)
+static __inline__ unsigned long ide_default_io_base(int index)
 {
-}
+	if (index == 0)
+		return IDE_BASE;
+	else
+		return 0;
+};
+
+void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
+			 unsigned long ctrl_port, int *irq);
+void ide_init_default_hwifs(void);
 
 #define MAX_HWIFS	1
 
-- 
Yoshinori Sato
<ysato@users.sourceforge.jp>

  reply	other threads:[~2004-02-22 16:30 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
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 [this message]
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=m2llmv9iwi.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.