LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [RFC][DOC] writing IDE driver guidelines
@ 2004-05-15 17:23 Bartlomiej Zolnierkiewicz
  2004-05-15 17:34 ` Jeff Garzik
  0 siblings, 1 reply; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-15 17:23 UTC (permalink / raw)
  To: Marc Singer; +Cc: linux-ide, linux-kernel


Feedback is welcomed.


writing IDE driver guidelines


general rules:

- code outside drivers/ide directory shouldn't need to
  include <linux/ide.h> if it does something is wrong

- do not believe in popular myth that driver code
  can be of less quality than core kernel code

- don't copy without thinking ugly and bogus code
  (there is still lot of such in IDE)

- IDE is going into full host driver model
  so write host driver for your interface

- host drivers should request/release IO resource
  themelves and set hwif->mmio to 2

- remember about ordering issues
  (you break device ordering and some machines won't boot)

- use linux-ide@vger.kernel.org mailing list


new architecture:

- add only what is really necessary to <asm/ide.h>
  and put interface specific code into drivers/ide

- ide_init_hwif_ports() is obsolete and dying,
  define IDE_ARCH_NO_OBSOLETE_INIT in <asm/ide.h>

- define ide_default_irq(), ide_init_default_irq()
  and ide_default_io_base() to (0)

- ide_init_default_hwifs() is gone


architecture specific drivers:

- do not abuse ide_default_irq()/ide_default_io_base() from <asm/ide.h>

- your driver should be in drivers/ide/<your_arch>/<your_driver_name>

- see drivers in drivers/ide/arm and drivers/ide/legacy for examples
  (especially m68k and arm specific drivers)

- do not use ide_setup_ports()


PCI drivers:

- no need to split your driver on .c and .h files

- /proc/ide/ interfaces are obsolete


--
Bartlomiej Zolnierkiewicz (15 May 2004)


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 17:23 [RFC][DOC] writing IDE driver guidelines Bartlomiej Zolnierkiewicz
@ 2004-05-15 17:34 ` Jeff Garzik
  2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 10+ messages in thread
From: Jeff Garzik @ 2004-05-15 17:34 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: Marc Singer, linux-ide, linux-kernel

On Sat, May 15, 2004 at 07:23:50PM +0200, Bartlomiej Zolnierkiewicz wrote:
> - do not believe in popular myth that driver code
>   can be of less quality than core kernel code

chuckle :)


> - don't copy without thinking ugly and bogus code
>   (there is still lot of such in IDE)

Agreed, but I think most driver authors will not know what is ugly
and bogus code, otherwise they would probably not copy it... (I hope!)


> - host drivers should request/release IO resource
>   themelves and set hwif->mmio to 2

Don't you mean, hwif->mmio==2 for MMIO hardware?


> - ide_init_hwif_ports() is obsolete and dying,
>   define IDE_ARCH_NO_OBSOLETE_INIT in <asm/ide.h>

hmmmm.  Please consider reversing this:

Make ide_init_hwif_ports() present _only_ if IDE_ARCH_OBSOLETE_INIT
is defined.

Then add that define for all arches that still use ide_init_hwif_ports().


> - define ide_default_irq(), ide_init_default_irq()
>   and ide_default_io_base() to (0)

Maybe provide generic definitions, so that new arches don't even
have to care about this?

	Jeff




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 17:34 ` Jeff Garzik
@ 2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
  2004-05-15 18:13     ` Bartlomiej Zolnierkiewicz
                       ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-15 17:58 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Marc Singer, linux-ide, linux-kernel

On Saturday 15 of May 2004 19:34, Jeff Garzik wrote:
> On Sat, May 15, 2004 at 07:23:50PM +0200, Bartlomiej Zolnierkiewicz wrote:
> > - do not believe in popular myth that driver code
> >   can be of less quality than core kernel code
>
> chuckle :)

hehe :)

> > - don't copy without thinking ugly and bogus code
> >   (there is still lot of such in IDE)
>
> Agreed, but I think most driver authors will not know what is ugly
> and bogus code, otherwise they would probably not copy it... (I hope!)

Some just copy _everything_ what is in other driver, really...

> > - host drivers should request/release IO resource
> >   themelves and set hwif->mmio to 2
>
> Don't you mean, hwif->mmio==2 for MMIO hardware?

It is was historically for MMIO, now it means that driver
handles IO resource itself (per comment in <linux/ide.h>).

> > - ide_init_hwif_ports() is obsolete and dying,
> >   define IDE_ARCH_NO_OBSOLETE_INIT in <asm/ide.h>
>
> hmmmm.  Please consider reversing this:
>
> Make ide_init_hwif_ports() present _only_ if IDE_ARCH_OBSOLETE_INIT
> is defined.
>
> Then add that define for all arches that still use ide_init_hwif_ports().

Well, I started with this idea but it requires adding this define for far
too many archs.  This is a problem especially for arm because we have to
either leave <asm-arm/arch-*/ide.h> or add #ifdef horror <asm-arm/ide.h>.

> > - define ide_default_irq(), ide_init_default_irq()
> >   and ide_default_io_base() to (0)
>
> Maybe provide generic definitions, so that new arches don't even
> have to care about this?

Please explain.

Thanks,
Bartlomiej


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
@ 2004-05-15 18:13     ` Bartlomiej Zolnierkiewicz
  2004-05-15 22:23     ` Jeff Garzik
  2004-05-16  0:51     ` Marc Singer
  2 siblings, 0 replies; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-15 18:13 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Marc Singer, linux-ide, linux-kernel

On Saturday 15 of May 2004 19:58, Bartlomiej Zolnierkiewicz wrote:
> > > - ide_init_hwif_ports() is obsolete and dying,
> > >   define IDE_ARCH_NO_OBSOLETE_INIT in <asm/ide.h>
> >
> > hmmmm.  Please consider reversing this:
> >
> > Make ide_init_hwif_ports() present _only_ if IDE_ARCH_OBSOLETE_INIT
> > is defined.
> >
> > Then add that define for all arches that still use ide_init_hwif_ports().
>
> Well, I started with this idea but it requires adding this define for far
> too many archs.  This is a problem especially for arm because we have to
> either leave <asm-arm/arch-*/ide.h> or add #ifdef horror <asm-arm/ide.h>.

It was thinko.  I will change this, thanks.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
  2004-05-15 18:13     ` Bartlomiej Zolnierkiewicz
@ 2004-05-15 22:23     ` Jeff Garzik
  2004-05-16  1:00       ` Marc Singer
  2004-05-16 19:26       ` Bartlomiej Zolnierkiewicz
  2004-05-16  0:51     ` Marc Singer
  2 siblings, 2 replies; 10+ messages in thread
From: Jeff Garzik @ 2004-05-15 22:23 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: Marc Singer, linux-ide, linux-kernel

Bartlomiej Zolnierkiewicz wrote:
> On Saturday 15 of May 2004 19:34, Jeff Garzik wrote:
>>On Sat, May 15, 2004 at 07:23:50PM +0200, Bartlomiej Zolnierkiewicz wrote:
>>>- host drivers should request/release IO resource
>>>  themelves and set hwif->mmio to 2
>>
>>Don't you mean, hwif->mmio==2 for MMIO hardware?
> 
> 
> It is was historically for MMIO, now it means that driver
> handles IO resource itself (per comment in <linux/ide.h>).

Maybe then create a constant HOST_IO_RESOURCES (value==2) to make that 
more obvious?


>>>- define ide_default_irq(), ide_init_default_irq()
>>>  and ide_default_io_base() to (0)
>>
>>Maybe provide generic definitions, so that new arches don't even
>>have to care about this?
> 
> 
> Please explain.

Your document appears to imply that each new arch should define the 
above three symbols.

My suggestion is to devise a method by which new arches don't have to 
care about those symbols at all, unless required to do so by the 
underlying hardware.

	Jeff




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
  2004-05-15 18:13     ` Bartlomiej Zolnierkiewicz
  2004-05-15 22:23     ` Jeff Garzik
@ 2004-05-16  0:51     ` Marc Singer
  2004-05-16 19:33       ` Bartlomiej Zolnierkiewicz
  2 siblings, 1 reply; 10+ messages in thread
From: Marc Singer @ 2004-05-16  0:51 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: Jeff Garzik, linux-ide, linux-kernel

On Sat, May 15, 2004 at 07:58:03PM +0200, Bartlomiej Zolnierkiewicz wrote:
> > > - host drivers should request/release IO resource
> > >   themelves and set hwif->mmio to 2
> >
> > Don't you mean, hwif->mmio==2 for MMIO hardware?
> 
> It is was historically for MMIO, now it means that driver
> handles IO resource itself (per comment in <linux/ide.h>).

If you are talking about this

        int             mmio;           /* hosts iomio (0) or custom (2) select 

do you really think that's enough?


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 22:23     ` Jeff Garzik
@ 2004-05-16  1:00       ` Marc Singer
  2004-05-16 19:34         ` Bartlomiej Zolnierkiewicz
  2004-05-16 19:26       ` Bartlomiej Zolnierkiewicz
  1 sibling, 1 reply; 10+ messages in thread
From: Marc Singer @ 2004-05-16  1:00 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Bartlomiej Zolnierkiewicz, linux-ide, linux-kernel

On Sat, May 15, 2004 at 06:23:04PM -0400, Jeff Garzik wrote:
> Bartlomiej Zolnierkiewicz wrote:
> >On Saturday 15 of May 2004 19:34, Jeff Garzik wrote:
> >>On Sat, May 15, 2004 at 07:23:50PM +0200, Bartlomiej Zolnierkiewicz wrote:
> >>>- host drivers should request/release IO resource
> >>> themelves and set hwif->mmio to 2
> >>
> >>Don't you mean, hwif->mmio==2 for MMIO hardware?
> >
> >
> >It is was historically for MMIO, now it means that driver
> >handles IO resource itself (per comment in <linux/ide.h>).
> 
> Maybe then create a constant HOST_IO_RESOURCES (value==2) to make that 
> more obvious?
> 

Please allow me to advocate for the naive.

While I do not in favor of lengthy commented discourses within the
code for all of the usual reasons, I do believe that interface
documentation is always welcome.  It encourages everyone to learn and
follow the rules.  It allows the subsystem maintainer to establish a
boundary so that accessing lower-level structures are left alone.

I'm not talking about a HOWTO as we know it.  Let's look at this mmio
flag.  How about writing this at a very minimum.

  	int mmio; /* 0: iommio; <insert appropriate direction */
		  /* 2: custom; driver must reserve & release system resources */
		  

Certainly, I'd rather see something along the lines of a full
description.

	int mmio;
	    /* This field controls whether or not the driver blah,
	       blah.  If the driver needs to reserve system resources,
	       e.g. ports of memory, set the value to 2 and blah, blah. */

It isn't much, but it goes a long way.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-15 22:23     ` Jeff Garzik
  2004-05-16  1:00       ` Marc Singer
@ 2004-05-16 19:26       ` Bartlomiej Zolnierkiewicz
  1 sibling, 0 replies; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-16 19:26 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Marc Singer, linux-ide, linux-kernel

On Sunday 16 of May 2004 00:23, Jeff Garzik wrote:

> >>>- define ide_default_irq(), ide_init_default_irq()
> >>>  and ide_default_io_base() to (0)
> >>
> >>Maybe provide generic definitions, so that new arches don't even
> >>have to care about this?
> >
> > Please explain.
>
> Your document appears to imply that each new arch should define the
> above three symbols.
>
> My suggestion is to devise a method by which new arches don't have to
> care about those symbols at all, unless required to do so by the
> underlying hardware.

OK will work on this


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-16  0:51     ` Marc Singer
@ 2004-05-16 19:33       ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-16 19:33 UTC (permalink / raw)
  To: Marc Singer; +Cc: Jeff Garzik, linux-ide, linux-kernel

On Sunday 16 of May 2004 02:51, Marc Singer wrote:
> On Sat, May 15, 2004 at 07:58:03PM +0200, Bartlomiej Zolnierkiewicz wrote:
> > > > - host drivers should request/release IO resource
> > > >   themelves and set hwif->mmio to 2
> > >
> > > Don't you mean, hwif->mmio==2 for MMIO hardware?
> >
> > It is was historically for MMIO, now it means that driver
> > handles IO resource itself (per comment in <linux/ide.h>).
>
> If you are talking about this
>
>         int             mmio;           /* hosts iomio (0) or custom (2)
> select
>
> do you really think that's enough?

No and I didn't say this.  I tried to describe current state of affairs.
Don't blame me for cryptic comments in <linux/ide.h>.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][DOC] writing IDE driver guidelines
  2004-05-16  1:00       ` Marc Singer
@ 2004-05-16 19:34         ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 10+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-05-16 19:34 UTC (permalink / raw)
  To: Marc Singer, Jeff Garzik; +Cc: linux-ide, linux-kernel

On Sunday 16 of May 2004 03:00, Marc Singer wrote:
> On Sat, May 15, 2004 at 06:23:04PM -0400, Jeff Garzik wrote:
> > Bartlomiej Zolnierkiewicz wrote:
> > >On Saturday 15 of May 2004 19:34, Jeff Garzik wrote:
> > >>On Sat, May 15, 2004 at 07:23:50PM +0200, Bartlomiej Zolnierkiewicz wrote:
> > >>>- host drivers should request/release IO resource
> > >>> themelves and set hwif->mmio to 2
> > >>
> > >>Don't you mean, hwif->mmio==2 for MMIO hardware?
> > >
> > >It is was historically for MMIO, now it means that driver
> > >handles IO resource itself (per comment in <linux/ide.h>).
> >
> > Maybe then create a constant HOST_IO_RESOURCES (value==2) to make that
> > more obvious?
>
> Please allow me to advocate for the naive.
>
> While I do not in favor of lengthy commented discourses within the
> code for all of the usual reasons, I do believe that interface
> documentation is always welcome.  It encourages everyone to learn and
> follow the rules.  It allows the subsystem maintainer to establish a
> boundary so that accessing lower-level structures are left alone.
>
> I'm not talking about a HOWTO as we know it.  Let's look at this mmio
> flag.  How about writing this at a very minimum.
>
>   	int mmio; /* 0: iommio; <insert appropriate direction */
> 		  /* 2: custom; driver must reserve & release system resources */

I think this is good for ide.h

> Certainly, I'd rather see something along the lines of a full
> description.
>
> 	int mmio;
> 	    /* This field controls whether or not the driver blah,
> 	       blah.  If the driver needs to reserve system resources,
> 	       e.g. ports of memory, set the value to 2 and blah, blah. */

and this is good for documentation file.

> It isn't much, but it goes a long way.

Thanks.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2004-05-16 19:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-15 17:23 [RFC][DOC] writing IDE driver guidelines Bartlomiej Zolnierkiewicz
2004-05-15 17:34 ` Jeff Garzik
2004-05-15 17:58   ` Bartlomiej Zolnierkiewicz
2004-05-15 18:13     ` Bartlomiej Zolnierkiewicz
2004-05-15 22:23     ` Jeff Garzik
2004-05-16  1:00       ` Marc Singer
2004-05-16 19:34         ` Bartlomiej Zolnierkiewicz
2004-05-16 19:26       ` Bartlomiej Zolnierkiewicz
2004-05-16  0:51     ` Marc Singer
2004-05-16 19:33       ` Bartlomiej Zolnierkiewicz

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).