--- arch/arm/mach-bcm2708/bcm2708.c.orig 2014-06-12 19:06:33.769260319 +0200 +++ arch/arm/mach-bcm2708/bcm2708.c 2014-06-12 19:31:44.827390374 +0200 @@ -79,8 +79,14 @@ // use GPIO 4 for the one-wire GPIO pin, if enabled #define W1_GPIO 4 +#define W1_GPIO1 22 +#define W1_GPIO2 23 +#define W1_GPIO3 24 // ensure one-wire GPIO pullup is disabled by default #define W1_PULLUP -1 +#define W1_PULLUP1 -1 +#define W1_PULLUP2 -1 +#define W1_PULLUP3 -1 /* command line parameters */ static unsigned boardrev, serial; @@ -89,7 +95,13 @@ static unsigned disk_led_active_low = 1; static unsigned reboot_part = 0; static unsigned w1_gpio_pin = W1_GPIO; +static unsigned w1_gpio_pin1 = W1_GPIO1; +static unsigned w1_gpio_pin2 = W1_GPIO2; +static unsigned w1_gpio_pin3 = W1_GPIO3; static unsigned w1_gpio_pullup = W1_PULLUP; +static unsigned w1_gpio_pullup1 = W1_PULLUP1; +static unsigned w1_gpio_pullup2 = W1_PULLUP2; +static unsigned w1_gpio_pullup3 = W1_PULLUP3; static void __init bcm2708_init_led(void); @@ -275,9 +287,46 @@ static struct platform_device w1_device = { .name = "w1-gpio", - .id = -1, + .id = 0, .dev.platform_data = &w1_gpio_pdata, }; + +static struct w1_gpio_platform_data w1_gpio_pdata1 = { + .pin = W1_GPIO1, + .ext_pullup_enable_pin = W1_PULLUP1, + .is_open_drain = 0, +}; + +static struct platform_device w1_device1 = { + .name = "w1-gpio", + .id = 1, + .dev.platform_data = &w1_gpio_pdata1, +}; + +static struct w1_gpio_platform_data w1_gpio_pdata2 = { + .pin = W1_GPIO2, + .ext_pullup_enable_pin = W1_PULLUP2, + .is_open_drain = 0, +}; + +static struct platform_device w1_device2 = { + .name = "w1-gpio", + .id = 2, + .dev.platform_data = &w1_gpio_pdata2, +}; + +static struct w1_gpio_platform_data w1_gpio_pdata3 = { + .pin = W1_GPIO3, + .ext_pullup_enable_pin = W1_PULLUP3, + .is_open_drain = 0, +}; + +static struct platform_device w1_device3 = { + .name = "w1-gpio", + .id = 3, + .dev.platform_data = &w1_gpio_pdata3, +}; + #endif static u64 fb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); @@ -798,6 +847,15 @@ w1_gpio_pdata.pin = w1_gpio_pin; w1_gpio_pdata.ext_pullup_enable_pin = w1_gpio_pullup; platform_device_register(&w1_device); + w1_gpio_pdata1.pin = w1_gpio_pin1; + w1_gpio_pdata1.ext_pullup_enable_pin = w1_gpio_pullup1; + platform_device_register(&w1_device1); + w1_gpio_pdata2.pin = w1_gpio_pin2; + w1_gpio_pdata2.ext_pullup_enable_pin = w1_gpio_pullup2; + platform_device_register(&w1_device2); + w1_gpio_pdata3.pin = w1_gpio_pin3; + w1_gpio_pdata3.ext_pullup_enable_pin = w1_gpio_pullup3; + platform_device_register(&w1_device3); #endif bcm_register_device(&bcm2708_systemtimer_device); bcm_register_device(&bcm2708_fb_device); @@ -1029,3 +1087,9 @@ module_param(reboot_part, uint, 0644); module_param(w1_gpio_pin, uint, 0644); module_param(w1_gpio_pullup, uint, 0644); +module_param(w1_gpio_pin1, uint, 0644); +module_param(w1_gpio_pullup1, uint, 0644); +module_param(w1_gpio_pin2, uint, 0644); +module_param(w1_gpio_pullup2, uint, 0644); +module_param(w1_gpio_pin3, uint, 0644); +module_param(w1_gpio_pullup3, uint, 0644);