linux-mips
[Top] [All Lists]

Re: [PATCH] I2C: SiByte: Convert the driver to make use of interrupts

To: Matt Turner <mattst88@gmail.com>
Subject: Re: [PATCH] I2C: SiByte: Convert the driver to make use of interrupts
From: Guenter Roeck <guenter.roeck@ericsson.com>
Date: Mon, 6 Dec 2010 22:23:44 -0800
Cc: Jean Delvare <khali@linux-fr.org>, "linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>, "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>, Ralf Baechle <ralf@linux-mips.org>, "Maciej W. Rozycki" <macro@linux-mips.org>
In-reply-to: <1291617494-18430-1-git-send-email-mattst88@gmail.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1291617494-18430-1-git-send-email-mattst88@gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.20 (2009-06-14)
On Mon, Dec 06, 2010 at 01:38:14AM -0500, Matt Turner wrote:
> From: Maciej W. Rozycki <macro@linux-mips.org>
> 
> This is a rewrite of large parts of the driver mainly so that it uses
> SMBus interrupts to offload the CPU from busy-waiting on status inputs.
> As a part of the overhaul of the init and exit calls, all accesses to the
> hardware got converted to use accessory functions via an ioremap() cookie.
> 
> Minimally rebased by Matt Turner.
> 
> Tested-by: Matt Turner <mattst88@gmail.com>
> Signed-off-by: Matt Turner <mattst88@gmail.com>

[ .. ] 
> 
> -static struct i2c_algo_sibyte_data sibyte_board_data[2] = {
> -       { NULL, 0, (void *) (CKSEG1+A_SMB_BASE(0)) },
> -       { NULL, 1, (void *) (CKSEG1+A_SMB_BASE(1)) }
> +static struct i2c_algo_sibyte_data i2c_sibyte_board_data[2] = {
> +       {
> +               .name   = "sb1250-smbus-0",
> +               .base   = A_SMB_0,
> +               .irq    = K_INT_SMB_0,
> +       },
> +       {
> +               .name   = "sb1250-smbus-1",
> +               .base   = A_SMB_1,
> +               .irq    = K_INT_SMB_1,

Found my problem. The .irq settings don't work for BCM1480.
It needs K_BCM1480_INT_SMB_0 and K_BCM1480_INT_SMB_1 from 
asm/sibyte/bcm1480_int.h.

For a clean fix, i2c_sibyte_board_data[] should probably be defined in a 
platform file, 
not in the i2c bus driver.

Guenter

<Prev in Thread] Current Thread [Next in Thread>