Lines Matching refs:data

197 	{ .compatible = "nxp,pca9540", .data = &chips[pca_9540] },
198 { .compatible = "nxp,pca9542", .data = &chips[pca_9542] },
199 { .compatible = "nxp,pca9543", .data = &chips[pca_9543] },
200 { .compatible = "nxp,pca9544", .data = &chips[pca_9544] },
201 { .compatible = "nxp,pca9545", .data = &chips[pca_9545] },
202 { .compatible = "nxp,pca9546", .data = &chips[pca_9546] },
203 { .compatible = "nxp,pca9547", .data = &chips[pca_9547] },
204 { .compatible = "nxp,pca9548", .data = &chips[pca_9548] },
205 { .compatible = "nxp,pca9846", .data = &chips[pca_9846] },
206 { .compatible = "nxp,pca9847", .data = &chips[pca_9847] },
207 { .compatible = "nxp,pca9848", .data = &chips[pca_9848] },
208 { .compatible = "nxp,pca9849", .data = &chips[pca_9849] },
225 static u8 pca954x_regval(struct pca954x *data, u8 chan)
228 if (data->chip->muxtype == pca954x_ismux)
229 return chan | data->chip->enable;
236 struct pca954x *data = i2c_mux_priv(muxc);
237 struct i2c_client *client = data->client;
241 regval = pca954x_regval(data, chan);
243 if (data->last_chan != regval) {
245 data->last_chan = ret < 0 ? 0 : regval;
253 struct pca954x *data = i2c_mux_priv(muxc);
254 struct i2c_client *client = data->client;
257 idle_state = READ_ONCE(data->idle_state);
264 data->last_chan = 0;
266 data->last_chan);
280 struct pca954x *data = i2c_mux_priv(muxc);
282 return sprintf(buf, "%d\n", READ_ONCE(data->idle_state));
291 struct pca954x *data = i2c_mux_priv(muxc);
300 (val < 0 || val >= data->chip->nchans))
305 WRITE_ONCE(data->idle_state, val);
310 if (data->last_chan || val != MUX_IDLE_DISCONNECT)
322 struct pca954x *data = dev_id;
326 ret = i2c_smbus_read_byte(data->client);
330 pending = (ret >> PCA954X_IRQ_OFFSET) & (BIT(data->chip->nchans) - 1);
331 for_each_set_bit(i, &pending, data->chip->nchans)
332 handle_nested_irq(irq_linear_revmap(data->irq, i));
351 struct pca954x *data = i2c_mux_priv(muxc);
352 struct i2c_client *client = data->client;
355 if (!data->chip->has_irq || client->irq <= 0)
358 raw_spin_lock_init(&data->lock);
360 data->irq = irq_domain_add_linear(client->dev.of_node,
361 data->chip->nchans,
362 &irq_domain_simple_ops, data);
363 if (!data->irq)
366 for (c = 0; c < data->chip->nchans; c++) {
367 irq = irq_create_mapping(data->irq, c);
372 irq_set_chip_data(irq, data);
382 struct pca954x *data = i2c_mux_priv(muxc);
385 if (data->irq) {
386 for (c = 0; c < data->chip->nchans; c++) {
387 irq = irq_find_mapping(data->irq, c);
390 irq_domain_remove(data->irq);
395 static int pca954x_init(struct i2c_client *client, struct pca954x *data)
399 if (data->idle_state >= 0)
400 data->last_chan = pca954x_regval(data, data->idle_state);
402 data->last_chan = 0; /* Disconnect multiplexer */
404 ret = i2c_smbus_write_byte(client, data->last_chan);
406 data->last_chan = 0;
421 struct pca954x *data;
428 muxc = i2c_mux_alloc(adap, dev, PCA954X_MAX_NCHANS, sizeof(*data), 0,
432 data = i2c_mux_priv(muxc);
435 data->client = client;
448 data->chip = device_get_match_data(dev);
449 if (!data->chip)
450 data->chip = &chips[id->driver_data];
452 if (data->chip->id.manufacturer_id != I2C_DEVICE_ID_NONE) {
460 (id.manufacturer_id != data->chip->id.manufacturer_id ||
461 id.part_id != data->chip->id.part_id)) {
469 data->idle_state = MUX_IDLE_AS_IS;
470 if (device_property_read_u32(dev, "idle-state", &data->idle_state)) {
472 data->idle_state = MUX_IDLE_DISCONNECT;
481 ret = pca954x_init(client, data);
492 for (num = 0; num < data->chip->nchans; num++) {
498 if (data->irq) {
499 ret = devm_request_threaded_irq(dev, data->client->irq,
502 "pca954x", data);
514 num, data->chip->muxtype == pca954x_ismux
539 struct pca954x *data = i2c_mux_priv(muxc);
542 ret = pca954x_init(client, data);