ixp4xx: remove linux 3.10 support
[openwrt.git] / target / linux / brcm2708 / patches-3.10 / 0066-Only-init-gpio-pins-of-selected-i2c-bus.patch
1 From f038d0681b072b929bb026bbb539cc8575d30c4f Mon Sep 17 00:00:00 2001
2 From: popcornmix <popcornmix@gmail.com>
3 Date: Sat, 8 Jun 2013 22:14:13 +0100
4 Subject: [PATCH 066/196] Only init gpio pins of selected i2c bus
5
6 ---
7  drivers/i2c/busses/i2c-bcm2708.c | 8 +++++---
8  1 file changed, 5 insertions(+), 3 deletions(-)
9
10 diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
11 index 3391889..edc90c0 100644
12 --- a/drivers/i2c/busses/i2c-bcm2708.c
13 +++ b/drivers/i2c/busses/i2c-bcm2708.c
14 @@ -97,7 +97,7 @@ struct bcm2708_i2c {
15   *
16   * FIXME: This is a hack. Use pinmux / pinctrl.
17   */
18 -static void bcm2708_i2c_init_pinmode(void)
19 +static void bcm2708_i2c_init_pinmode(int id)
20  {
21  #define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
22  #define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
23 @@ -105,8 +105,10 @@ static void bcm2708_i2c_init_pinmode(void)
24         int pin;
25         u32 *gpio = ioremap(0x20200000, SZ_16K);
26  
27 +        BUG_ON(id != 0 && id != 1);
28         /* BSC0 is on GPIO 0 & 1, BSC1 is on GPIO 2 & 3 */
29 -       for (pin = 0; pin <= 3; pin++) {
30 +       for (pin = id*2+0; pin <= id*2+1; pin++) {
31 +printk("bcm2708_i2c_init_pinmode(%d,%d)\n", id, pin);
32                 INP_GPIO(pin);          /* set mode to GPIO input first */
33                 SET_GPIO_ALT(pin, 0);   /* set mode to ALT 0 */
34         }
35 @@ -279,7 +281,7 @@ static int bcm2708_i2c_probe(struct platform_device *pdev)
36                 return PTR_ERR(clk);
37         }
38  
39 -       bcm2708_i2c_init_pinmode();
40 +       bcm2708_i2c_init_pinmode(pdev->id);
41  
42         bi = kzalloc(sizeof(*bi), GFP_KERNEL);
43         if (!bi)
44 -- 
45 1.9.1
46