All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: jwilliams@itee.uq.edu.au
Cc: linux-kernel@vger.kernel.org
Subject: Re: [SATA] non-PCI SATA devices and libata
Date: Tue, 5 Apr 2005 18:37:34 +0200	[thread overview]
Message-ID: <58cb370e05040509377d1313cc@mail.gmail.com> (raw)
In-Reply-To: <423E0522.8050600@itee.uq.edu.au>

Hi,

On Mar 21, 2005 1:20 AM, John Williams <jwilliams@itee.uq.edu.au> wrote:
> Hello,
> 
> I am looking into developing a driver for a custom, non-PCI SATA
> controller.  The target arch is Microblaze, an FPGA-based NOMMU target
> on a 2.4.29-uc0 kernel.
> 
> It seems that Jeff Garzik's libata is the way to go for SATA, however
> there seems to be some degree of coupling between libata and PCI support.
> 
> Some comments/observations, please correct me if I am wrong:
> 
>   - include/linux/libata.h appears to recognise that CONFIG_PCI may not
> be set, however libata-compat.h is entirely PCI-specific.  Indeed, it

This is because generic DMA API and generic driver model 
are not present in 2.4.x kernels.

> effectively maps generic bus/dma operations onto their pci-specific
> equivalents.  Also, libata.h unconditionally includes pci.h.
> 
>   - All of the drivers/scsi/sata_XXX drivers target PCI devices only.
> 
> It seems I have a few choices here.
> 
> Option 1 is to just hack together stubbed PCI support for my arch,
> making our on-chip bus pretend to be PCI for the purposes of libata (and
> indeed many other bus subsystems, like USB).  This is pretty unclean,
> particularly since it is entirely likely that someone will build a
> microblaze system with a true PCI bridge and bus, meaning that this
> temporary hack would certainly come back to haunt me[1].
> 
> Option 2 is to try to decouple libata from PCI support.  This may be as
> simple as a conditional inclusion of libata-compat.h from libata.h,
> however I am not yet familiar enough with libata to be sure.

Option 2 is better then Option 1.  You may need to add 
#ifdefs for DMA support on your arch to libata-compat.h
(kind of hack which shouldn't be needed in 2.6.x).

> For now this will be staying in the NOMMU 2.4 kernel (uClinux), but if I
> choose option (2) I would like to work with libata, not against it.  It
> may well be that non-PCI SATA support is a Good Thing in a broader
> sense, so perhaps this is a good discussion to have anyway.
> 
> All input, suggestions and comments welcome.
> 
> Thanks,
> 
> John
> 
> [1] There is a bigger picture here, that with FPGA-based CPUs like
> Microblaze, we can build systems with arbitrary CPU/memory/IO bus
> topologies.  Indeed, we do so on a daily basis.  In the back of my mind
> I am envisioning some kind of generic bus abstraction API, of which PCI,
> USB etc would be mere instances.

Use 2.6.x :)

Bartlomiej

      reply	other threads:[~2005-04-05 16:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-20 23:20 [SATA] non-PCI SATA devices and libata John Williams
2005-04-05 16:37 ` Bartlomiej Zolnierkiewicz [this message]

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=58cb370e05040509377d1313cc@mail.gmail.com \
    --to=bzolnier@gmail.com \
    --cc=jwilliams@itee.uq.edu.au \
    --cc=linux-kernel@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.