Lines Matching refs:chan
134 static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs,
137 struct i2c_atr *atr = chan->atr;
142 if (unlikely(chan->orig_addrs_size < num)) {
150 kfree(chan->orig_addrs);
151 chan->orig_addrs = new_buf;
152 chan->orig_addrs_size = num;
156 chan->orig_addrs[i] = msgs[i].addr;
158 c2a = i2c_atr_find_mapping_by_addr(&chan->alias_list,
165 msgs[i].addr = chan->orig_addrs[i];
183 static void i2c_atr_unmap_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs,
189 msgs[i].addr = chan->orig_addrs[i];
195 struct i2c_atr_chan *chan = adap->algo_data;
196 struct i2c_atr *atr = chan->atr;
201 mutex_lock(&chan->orig_addrs_lock);
203 ret = i2c_atr_map_msgs(chan, msgs, num);
211 i2c_atr_unmap_msgs(chan, msgs, num);
214 mutex_unlock(&chan->orig_addrs_lock);
223 struct i2c_atr_chan *chan = adap->algo_data;
224 struct i2c_atr *atr = chan->atr;
228 c2a = i2c_atr_find_mapping_by_addr(&chan->alias_list, addr);
240 struct i2c_atr_chan *chan = adap->algo_data;
241 struct i2c_adapter *parent = chan->atr->parent;
248 struct i2c_atr_chan *chan = adapter->algo_data;
249 struct i2c_atr *atr = chan->atr;
256 struct i2c_atr_chan *chan = adapter->algo_data;
257 struct i2c_atr *atr = chan->atr;
264 struct i2c_atr_chan *chan = adapter->algo_data;
265 struct i2c_atr *atr = chan->atr;
319 struct i2c_atr_chan *chan = adapter->algo_data;
320 struct i2c_atr *atr = chan->atr;
337 ret = atr->ops->attach_client(atr, chan->chan_id, client, alias);
341 dev_dbg(atr->dev, "chan%u: client 0x%02x mapped at alias 0x%02x (%s)\n",
342 chan->chan_id, client->addr, alias, client->name);
346 list_add(&c2a->node, &chan->alias_list);
361 struct i2c_atr_chan *chan = adapter->algo_data;
362 struct i2c_atr *atr = chan->atr;
365 atr->ops->detach_client(atr, chan->chan_id, client);
367 c2a = i2c_atr_find_mapping_by_client(&chan->alias_list, client);
377 "chan%u: client 0x%02x unmapped from alias 0x%02x (%s)\n",
378 chan->chan_id, client->addr, c2a->alias, client->name);
573 struct i2c_atr_chan *chan;
587 chan = kzalloc(sizeof(*chan), GFP_KERNEL);
588 if (!chan)
594 chan->atr = atr;
595 chan->chan_id = chan_id;
596 INIT_LIST_HEAD(&chan->alias_list);
597 mutex_init(&chan->orig_addrs_lock);
599 snprintf(chan->adap.name, sizeof(chan->adap.name), "i2c-%d-atr-%d",
601 chan->adap.owner = THIS_MODULE;
602 chan->adap.algo = &atr->algo;
603 chan->adap.algo_data = chan;
604 chan->adap.dev.parent = adapter_parent;
605 chan->adap.retries = parent->retries;
606 chan->adap.timeout = parent->timeout;
607 chan->adap.quirks = parent->quirks;
608 chan->adap.lock_ops = &i2c_atr_lock_ops;
611 device_set_node(&chan->adap.dev, fwnode_handle_get(bus_handle));
627 device_set_node(&chan->adap.dev, child);
631 atr->adapter[chan_id] = &chan->adap;
633 ret = i2c_add_adapter(&chan->adap);
641 chan->chan_id);
643 ret = sysfs_create_link(&chan->adap.dev.kobj, &dev->kobj, "atr_device");
646 ret = sysfs_create_link(&dev->kobj, &chan->adap.dev.kobj, symlink_name);
650 dev_dbg(dev, "Added ATR child bus %d\n", i2c_adapter_id(&chan->adap));
655 fwnode_handle_put(dev_fwnode(&chan->adap.dev));
656 mutex_destroy(&chan->orig_addrs_lock);
657 kfree(chan);
666 struct i2c_atr_chan *chan;
674 chan = adap->algo_data;
680 chan->chan_id);
682 sysfs_remove_link(&chan->adap.dev.kobj, "atr_device");
689 mutex_destroy(&chan->orig_addrs_lock);
690 kfree(chan->orig_addrs);
691 kfree(chan);