Lines Matching +full:w1 +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0-or-later
23 #include <linux/w1.h>
58 * Using tristate pins, since i can't find any open-drain pin in whole motherboard.
60 * since we don't know motherboard schema, which has pretty unused(may be not) GPIO.
70 writeb(reg, dev->port_index); in matrox_w1_read_reg()
71 ret = readb(dev->port_data); in matrox_w1_read_reg()
79 writeb(reg, dev->port_index); in matrox_w1_write_reg()
80 writeb(val, dev->port_data); in matrox_w1_write_reg()
92 bit = dev->data_mask; in matrox_w1_write_ddc_bit()
95 matrox_w1_write_reg(dev, MATROX_GET_CONTROL, ((ret & ~dev->data_mask) | bit)); in matrox_w1_write_ddc_bit()
120 if (pdev->vendor != PCI_VENDOR_ID_MATROX || pdev->device != PCI_DEVICE_ID_MATROX_G400) in matrox_w1_probe()
121 return -ENODEV; in matrox_w1_probe()
126 return -ENOMEM; in matrox_w1_probe()
128 dev->bus_master = (struct w1_bus_master *)(dev + 1); in matrox_w1_probe()
134 dev->phys_addr = pci_resource_start(pdev, 1); in matrox_w1_probe()
136 dev->virt_addr = ioremap(dev->phys_addr, 16384); in matrox_w1_probe()
137 if (!dev->virt_addr) { in matrox_w1_probe()
138 dev_err(&pdev->dev, "%s: failed to ioremap(0x%lx, %d).\n", in matrox_w1_probe()
139 __func__, dev->phys_addr, 16384); in matrox_w1_probe()
140 err = -EIO; in matrox_w1_probe()
144 dev->base_addr = dev->virt_addr + MATROX_BASE; in matrox_w1_probe()
145 dev->port_index = dev->base_addr + MATROX_PORT_INDEX_OFFSET; in matrox_w1_probe()
146 dev->port_data = dev->base_addr + MATROX_PORT_DATA_OFFSET; in matrox_w1_probe()
147 dev->data_mask = (MATROX_G400_DDC_DATA); in matrox_w1_probe()
151 dev->bus_master->data = dev; in matrox_w1_probe()
152 dev->bus_master->read_bit = &matrox_w1_read_ddc_bit; in matrox_w1_probe()
153 dev->bus_master->write_bit = &matrox_w1_write_ddc_bit; in matrox_w1_probe()
155 err = w1_add_master_device(dev->bus_master); in matrox_w1_probe()
161 dev->found = 1; in matrox_w1_probe()
163 dev_info(&pdev->dev, "Matrox G400 GPIO transport layer for 1-wire.\n"); in matrox_w1_probe()
168 if (dev->virt_addr) in matrox_w1_probe()
169 iounmap(dev->virt_addr); in matrox_w1_probe()
179 if (dev->found) { in matrox_w1_remove()
180 w1_remove_master_device(dev->bus_master); in matrox_w1_remove()
181 iounmap(dev->virt_addr); in matrox_w1_remove()
201 MODULE_DESCRIPTION("Driver for transport(Dallas 1-wire protocol) over VGA DDC(matrox gpio).");