*
* FIXME: This is a hack. Use pinmux / pinctrl.
*/
-static void bcm2708_i2c_init_pinmode(void)
+static void bcm2708_i2c_init_pinmode(int id)
{
#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
int pin;
u32 *gpio = ioremap(0x20200000, SZ_16K);
+ BUG_ON(id != 0 && id != 1);
/* BSC0 is on GPIO 0 & 1, BSC1 is on GPIO 2 & 3 */
- for (pin = 0; pin <= 3; pin++) {
+ for (pin = id*2+0; pin <= id*2+1; pin++) {
INP_GPIO(pin); /* set mode to GPIO input first */
SET_GPIO_ALT(pin, 0); /* set mode to ALT 0 */
}
return PTR_ERR(clk);
}
- bcm2708_i2c_init_pinmode();
+ bcm2708_i2c_init_pinmode(pdev->id);
bi = kzalloc(sizeof(*bi), GFP_KERNEL);
if (!bi)