1e9bb6275SMauro Carvalho Chehab===================== 2e9bb6275SMauro Carvalho ChehabKernel driver w1-gpio 3e9bb6275SMauro Carvalho Chehab===================== 4e9bb6275SMauro Carvalho Chehab 5e9bb6275SMauro Carvalho ChehabAuthor: Ville Syrjala <syrjala@sci.fi> 6e9bb6275SMauro Carvalho Chehab 7e9bb6275SMauro Carvalho Chehab 8e9bb6275SMauro Carvalho ChehabDescription 9e9bb6275SMauro Carvalho Chehab----------- 10e9bb6275SMauro Carvalho Chehab 11e9bb6275SMauro Carvalho ChehabGPIO 1-wire bus master driver. The driver uses the GPIO API to control the 12e9bb6275SMauro Carvalho Chehabwire and the GPIO pin can be specified using GPIO machine descriptor tables. 13e9bb6275SMauro Carvalho ChehabIt is also possible to define the master using device tree, see 14*bb667205SMauro Carvalho ChehabDocumentation/devicetree/bindings/w1/w1-gpio.yaml 15e9bb6275SMauro Carvalho Chehab 16e9bb6275SMauro Carvalho Chehab 17e9bb6275SMauro Carvalho ChehabExample (mach-at91) 18e9bb6275SMauro Carvalho Chehab------------------- 19e9bb6275SMauro Carvalho Chehab 20e9bb6275SMauro Carvalho Chehab:: 21e9bb6275SMauro Carvalho Chehab 22e9bb6275SMauro Carvalho Chehab #include <linux/gpio/machine.h> 23e9bb6275SMauro Carvalho Chehab #include <linux/w1-gpio.h> 24e9bb6275SMauro Carvalho Chehab 25e9bb6275SMauro Carvalho Chehab static struct gpiod_lookup_table foo_w1_gpiod_table = { 26e9bb6275SMauro Carvalho Chehab .dev_id = "w1-gpio", 27e9bb6275SMauro Carvalho Chehab .table = { 28e9bb6275SMauro Carvalho Chehab GPIO_LOOKUP_IDX("at91-gpio", AT91_PIN_PB20, NULL, 0, 29e9bb6275SMauro Carvalho Chehab GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN), 30e9bb6275SMauro Carvalho Chehab }, 31e9bb6275SMauro Carvalho Chehab }; 32e9bb6275SMauro Carvalho Chehab 33e9bb6275SMauro Carvalho Chehab static struct w1_gpio_platform_data foo_w1_gpio_pdata = { 34e9bb6275SMauro Carvalho Chehab .ext_pullup_enable_pin = -EINVAL, 35e9bb6275SMauro Carvalho Chehab }; 36e9bb6275SMauro Carvalho Chehab 37e9bb6275SMauro Carvalho Chehab static struct platform_device foo_w1_device = { 38e9bb6275SMauro Carvalho Chehab .name = "w1-gpio", 39e9bb6275SMauro Carvalho Chehab .id = -1, 40e9bb6275SMauro Carvalho Chehab .dev.platform_data = &foo_w1_gpio_pdata, 41e9bb6275SMauro Carvalho Chehab }; 42e9bb6275SMauro Carvalho Chehab 43e9bb6275SMauro Carvalho Chehab ... 44e9bb6275SMauro Carvalho Chehab at91_set_GPIO_periph(foo_w1_gpio_pdata.pin, 1); 45e9bb6275SMauro Carvalho Chehab at91_set_multi_drive(foo_w1_gpio_pdata.pin, 1); 46e9bb6275SMauro Carvalho Chehab gpiod_add_lookup_table(&foo_w1_gpiod_table); 47e9bb6275SMauro Carvalho Chehab platform_device_register(&foo_w1_device); 48