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