Lines Matching +full:slave +full:- +full:addr
1 /*-
52 #include <dt-bindings/mfd/as3722.h>
64 #define LOCK(_sc) sx_xlock(&(_sc)->lock)
65 #define UNLOCK(_sc) sx_xunlock(&(_sc)->lock)
66 #define LOCK_INIT(_sc) sx_init(&(_sc)->lock, "as3722")
67 #define LOCK_DESTROY(_sc) sx_destroy(&(_sc)->lock);
68 #define ASSERT_LOCKED(_sc) sx_assert(&(_sc)->lock, SA_XLOCKED);
69 #define ASSERT_UNLOCKED(_sc) sx_assert(&(_sc)->lock, SA_UNLOCKED);
79 uint8_t addr;
82 {0, IIC_M_WR, 1, &addr},
86 msgs[0].slave = sc->bus_addr;
87 msgs[1].slave = sc->bus_addr;
88 addr = reg;
90 rv = iicbus_transfer(sc->dev, msgs, 2);
92 device_printf(sc->dev,
103 uint8_t addr;
106 {0, IIC_M_WR, 1, &addr},
110 msgs[0].slave = sc->bus_addr;
111 msgs[1].slave = sc->bus_addr;
112 addr = reg;
114 rv = iicbus_transfer(sc->dev, msgs, 2);
116 device_printf(sc->dev,
134 msgs[0].slave = sc->bus_addr;
138 rv = iicbus_transfer(sc->dev, msgs, 1);
140 device_printf(sc->dev,
157 msgs[0].slave = sc->bus_addr;
158 msgs[1].slave = sc->bus_addr;
161 rv = iicbus_transfer(sc->dev, msgs, 2);
163 device_printf(sc->dev,
202 device_printf(sc->dev, "Invalid chip ID is 0x%x\n", reg);
206 rv = RD1(sc, AS3722_ASIC_ID2, &sc->chip_rev);
211 device_printf(sc->dev, "AS3722 rev: 0x%x\n", sc->chip_rev);
222 if (sc->int_pullup)
224 if (sc->i2c_pullup)
252 sc->int_pullup =
253 OF_hasprop(node, "ams,enable-internal-int-pullup") ? 1 : 0;
254 sc->i2c_pullup =
255 OF_hasprop(node, "ams,enable-internal-i2c-pullup") ? 1 : 0;
272 if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
287 sc->dev = dev;
288 sc->bus_addr = iicbus_get_addr(dev);
289 node = ofw_bus_get_node(sc->dev);
294 sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
296 if (sc->irq_res == NULL) {
325 rv = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
326 NULL, as3722_intr, sc, &sc->irq_h);
335 if (sc->irq_h != NULL)
336 bus_teardown_intr(dev, sc->irq_res, sc->irq_h);
337 if (sc->irq_res != NULL)
338 bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);
354 if (sc->irq_h != NULL)
355 bus_teardown_intr(dev, sc->irq_res, sc->irq_h);
356 if (sc->irq_res != NULL)
357 bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res);