public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Arnaud Giersch <arnaud.giersch@free.fr>
Cc: philb@gnu.org, tim@cyberelk.net, campbell@torque.net,
	andrea@suse.de, linux-parport@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCHv2] parport: add parallel port support for SGI O2
Date: Sun, 22 Jan 2006 22:24:25 -0800	[thread overview]
Message-ID: <20060122222425.6907656f.akpm@osdl.org> (raw)
In-Reply-To: <87mzhqfq5y.fsf@groumpf.homeip.net>

Arnaud Giersch <arnaud.giersch@free.fr> wrote:
>
> From: Arnaud Giersch <arnaud.giersch@free.fr>
> 
> Add support for the built-in parallel port on SGI O2 (a.k.a. IP32).
> Define a new configuration option: PARPORT_IP32.  The module is named
> parport_ip32.
> 
> Hardware support for SPP, EPP and ECP modes along with DMA support
> when available are currently implemented.

Nice looking driver.  Big.

It does rather a lot of

	if (foo)	do_something();

whereas we prefer

	if (foo)
		do_something();

but if that was a blocker, we wouldn't have any drivers.

> +static void parport_ip32_dma_setup_context(unsigned int limit)
> +{
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&parport_ip32_dma.lock, flags);
> +	if (parport_ip32_dma.left > 0) {
> +		volatile u64 __iomem *ctxreg = (parport_ip32_dma.ctx == 0) ?
> +			&mace->perif.ctrl.parport.context_a :
> +			&mace->perif.ctrl.parport.context_b;

Does this need to be volatile?   writeq() should do the right thing.

> +static size_t parport_ip32_epp_read(void __iomem *eppreg,
> +				    struct parport *p, void *buf,
> +				    size_t len, int flags)
> +{
> +	struct parport_ip32_private * const priv = p->physport->private_data;
> +	size_t got;
> +	parport_ip32_set_mode(p, ECR_MODE_EPP);
> +	parport_ip32_data_reverse(p);
> +	parport_ip32_write_control(p, DCR_nINIT);
> +	if ((flags & PARPORT_EPP_FAST) && (len > 1)) {
> +		readsb(eppreg, buf, len);

readsb() is a mips thing, and doesn't seem to be documented.  What does it
do, and why does the driver use it (only) here?

> +		writesb(eppreg, buf, len);

> +static unsigned int parport_ip32_fifo_wait_break(struct parport *p,
> +						 unsigned long expire)
> +{
> +	cond_resched();
> +	if (time_after(jiffies, expire)) {
> +		printk(KERN_DEBUG PPIP32
> +		       "%s: FIFO write timed out\n", p->name);
> +		return 1;
> +	}
> +	if (signal_pending(current)) {
> +		printk(KERN_DEBUG PPIP32
> +		       "%s: Signal pending\n", p->name);
> +		return 1;
> +	}

This printk could be a bit noisy, if someone hoses a signal stream at a
printing program.


  reply	other threads:[~2006-01-23  6:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-20 23:14 [PATCHv2] parport: add parallel port support for SGI O2 Arnaud Giersch
2006-01-23  6:24 ` Andrew Morton [this message]
2006-01-23 23:38   ` Arnaud Giersch
2006-01-24 23:33     ` Arnaud Giersch

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=20060122222425.6907656f.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=andrea@suse.de \
    --cc=arnaud.giersch@free.fr \
    --cc=campbell@torque.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parport@lists.infradead.org \
    --cc=philb@gnu.org \
    --cc=tim@cyberelk.net \
    /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