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>
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).