Home
last modified time | relevance | path

Searched full:ibi (Results 1 – 24 of 24) sorted by relevance

/linux/include/linux/i3c/
H A Dmaster.h101 * struct i3c_ibi_slot - I3C IBI (In-Band Interrupt) slot
102 * @work: work associated to this slot. The IBI handler will be called from
104 * @dev: the I3C device that has generated this IBI
105 * @len: length of the payload associated to this IBI
108 * An IBI slot is an object pre-allocated by the controller and used when an
109 * IBI comes in.
110 * Every time an IBI comes in, the I3C master driver should find a free IBI
111 * slot in its IBI slot pool, retrieve the IBI payload and queue the IBI using
114 * How IBI slots are allocated is left to the I3C master driver, though, for
115 * simple kmalloc-based allocation, the generic IBI slot pool can be used.
[all …]
H A Ddevice.h109 * @max_ibi_len: max IBI payload length
314 * struct i3c_ibi_setup - IBI setup object
315 * @max_payload_len: maximum length of the payload associated to an IBI. If one
316 * IBI appears to have a payload that is bigger than this
317 * number, the IBI will be rejected.
318 * @num_slots: number of pre-allocated IBI slots. This should be chosen so that
319 * the system never runs out of IBI slots, otherwise you'll lose
321 * @handler: IBI handler, every time an IBI is received. This handler is called
H A Dccc.h84 * @ibi_len: maximum IBI payload length
88 * The IBI length is only valid if the I3C slave is IBI capable
/linux/drivers/i3c/
H A Dmaster.c411 * typically specified by the DT-'s assigned-address property. Lower addresses having higher IBI
1187 * When the device does not have IBI payload GETMRL only returns 2 in i3c_master_getmrl_locked()
2081 * We need to restore the IBI state too, so let's save the in i3c_master_add_i3c_dev_locked()
2082 * IBI information and try to restore them after olddev has in i3c_master_add_i3c_dev_locked()
2083 * been detached+released and its IBI has been stopped and in i3c_master_add_i3c_dev_locked()
2087 if (olddev->ibi) { in i3c_master_add_i3c_dev_locked()
2088 ibireq.handler = olddev->ibi->handler; in i3c_master_add_i3c_dev_locked()
2089 ibireq.max_payload_len = olddev->ibi->max_payload_len; in i3c_master_add_i3c_dev_locked()
2090 ibireq.num_slots = olddev->ibi->num_slots; in i3c_master_add_i3c_dev_locked()
2092 if (olddev->ibi->enabled) in i3c_master_add_i3c_dev_locked()
[all …]
H A Ddevice.c31 * * -EAGAIN: controller lost address arbitration. Target (IBI, HJ or
154 * i3c_device_request_ibi() - Request an IBI
156 * @req: setup requested for this IBI
159 * process IBIs coming from @dev. When this function returns, the IBI is not
185 * i3c_device_free_ibi() - Free all resources needed for IBI handling
186 * @dev: device on which you want to release IBI resources
/linux/drivers/i3c/master/
H A Dsvc-i3c-master.c213 * @ibi: IBI structure
214 * @ibi.num_slots: Number of slots available in @ibi.slots
215 * @ibi.slots: Available IBI slots
216 * @ibi.tbq_slot: To be queued IBI slot
217 * @ibi.lock: IBI lock
218 * @lock: Transfer lock, protect between IBI work thread and callbacks from master
220 * @enabled_events: Bit masks for enable events (IBI, HotJoin).
246 /* Prevent races within IBI handlers */
248 } ibi; member
258 * @ibi: IBI slot index in the master structure
[all …]
H A Di3c-master-cdns.c409 } ibi; member
866 s16 ibi; member
953 data->ibi = -1; in cdns_i3c_master_attach_i3c_dev()
1308 if (id >= master->ibi.num_slots || (ibir & IBIR_ERROR)) in cdns_i3c_master_handle_ibi()
1311 dev = master->ibi.slots[id]; in cdns_i3c_master_handle_ibi()
1312 spin_lock(&master->ibi.lock); in cdns_i3c_master_handle_ibi()
1325 dev->ibi->max_payload_len); in cdns_i3c_master_handle_ibi()
1330 spin_unlock(&master->ibi.lock); in cdns_i3c_master_handle_ibi()
1406 spin_lock_irqsave(&master->ibi.lock, flags); in cdns_i3c_master_disable_ibi()
1407 sirmap = readl(master->regs + SIR_MAP_DEV_REG(data->ibi)); in cdns_i3c_master_disable_ibi()
[all …]
H A Ddw-i3c-master.c1379 * error on IBI payload data, as well as losing the last byte of in dw_i3c_master_handle_ibi_sir()
1390 "IBI from unknown addr 0x%x\n", addr); in dw_i3c_master_handle_ibi_sir()
1395 if (!dev || !dev->ibi) { in dw_i3c_master_handle_ibi_sir()
1397 "IBI from non-requested dev idx %d\n", idx); in dw_i3c_master_handle_ibi_sir()
1405 "No IBI slots available\n"); in dw_i3c_master_handle_ibi_sir()
1409 if (dev->ibi->max_payload_len < len) { in dw_i3c_master_handle_ibi_sir()
1411 "IBI payload len %d greater than max %d\n", in dw_i3c_master_handle_ibi_sir()
1412 len, dev->ibi->max_payload_len); in dw_i3c_master_handle_ibi_sir()
1456 "unsupported IBI type 0x%lx len %d\n", in dw_i3c_master_irq_handle_ibis()
H A Dast2600-i3c-master.c115 "Enabling PEC workaround. IBI payloads will be truncated\n"); in ast2600_i3c_set_dat_ibi()
H A Drenesas-i3c.c6 * TODO: IBI support, HotJoin support, Target support
/linux/Documentation/devicetree/bindings/i3c/
H A Drenesas,i3c.yaml30 - description: Normal IBI status buffer full interrupt
51 - const: ibi
169 "cmd", "ibi", "rx", "tx", "rcv",
/linux/drivers/i3c/master/mipi-i3c-hci/
H A Dibi.h7 * Common IBI related stuff
14 * IBI Status Descriptor bits
H A Dcore.c104 #define IBI_NOTIFY_CTRL 0x58 /* IBI Notify Control */
/linux/drivers/net/mctp/
H A Dmctp-i3c.c37 /* Mandatory Data Byte in an IBI, from DSP0233 */
80 /* Whether BCR indicates MDB is present in IBI */
197 dev_warn_once(i3cdev_to_dev(i3c), "IBI with missing MDB"); in mctp_i3c_ibi_handler()
206 const struct i3c_ibi_setup ibi = { in mctp_i3c_setup() local
221 rc = i3c_device_request_ibi(mi->i3c, &ibi); in mctp_i3c_setup()
232 "Failed requesting IBI (%d)\n", rc); in mctp_i3c_setup()
241 dev_err(i3cdev_to_dev(mi->i3c), "Failed enabling IBI (%d)\n", rc); in mctp_i3c_setup()
/linux/drivers/net/wireless/mediatek/mt76/mt76x2/
H A Dpci_phy.c80 mt76_clear(dev, MT_BBP(IBI, 9), BIT(11)); in mt76x2_phy_set_antenna()
91 mt76_clear(dev, MT_BBP(IBI, 9), BIT(11)); in mt76x2_phy_set_antenna()
104 mt76_set(dev, MT_BBP(IBI, 9), BIT(11)); in mt76x2_phy_set_antenna()
H A Dmac.c27 mt76_rr(dev, MT_BBP(IBI, 12))) { in mt76x2_mac_stop()
H A Dusb_mac.c135 !mt76_rr(dev, MT_BBP(IBI, 12))) { in mt76x2u_mac_stop()
/linux/drivers/media/common/b2c2/
H A Dflexcop-reg.h36 /* FlexCop IBI Registers */
H A Dflexcop.c42 /* global zero for ibi values */
/linux/drivers/net/wireless/mediatek/mt76/mt76x0/
H A Dinitvals_init.h93 { MT_BBP(IBI, 11), 0x0FDE8081 },
/linux/drivers/net/wireless/mediatek/mt76/
H A Dmt76x02_dfs.c792 mt76_wr(dev, MT_BBP(IBI, 11), 0x0c350001); in mt76x02_dfs_set_bbp_params()
842 mt76_wr(dev, MT_BBP(IBI, 11), 0xfde8081); in mt76x02_dfs_init_params()
844 mt76_wr(dev, MT_BBP(IBI, 11), 0); in mt76x02_dfs_init_params()
/linux/drivers/media/usb/b2c2/
H A Dflexcop-usb.c47 * in the IBI address, to make the V8 code simpler.
50 * IBI ADDRESS FORMAT: RHHH BLLL
/linux/Documentation/driver-api/i3c/
H A Dprotocol.rst83 This mechanism is called IBI for In Band Interrupts, and as stated in the name,
/linux/
H A DCREDITS1422 E: pgmdsg@ibi.com