/linux/include/linux/i3c/ |
H A D | master.h | 101 * 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 D | device.h | 109 * @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 D | ccc.h | 84 * @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 D | master.c | 411 * 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 D | device.c | 31 * * -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 D | svc-i3c-master.c | 213 * @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 D | i3c-master-cdns.c | 409 } 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 D | dw-i3c-master.c | 1379 * 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 D | ast2600-i3c-master.c | 115 "Enabling PEC workaround. IBI payloads will be truncated\n"); in ast2600_i3c_set_dat_ibi()
|
H A D | renesas-i3c.c | 6 * TODO: IBI support, HotJoin support, Target support
|
/linux/Documentation/devicetree/bindings/i3c/ |
H A D | renesas,i3c.yaml | 30 - 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 D | ibi.h | 7 * Common IBI related stuff 14 * IBI Status Descriptor bits
|
H A D | core.c | 104 #define IBI_NOTIFY_CTRL 0x58 /* IBI Notify Control */
|
/linux/drivers/net/mctp/ |
H A D | mctp-i3c.c | 37 /* 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 D | pci_phy.c | 80 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 D | mac.c | 27 mt76_rr(dev, MT_BBP(IBI, 12))) { in mt76x2_mac_stop()
|
H A D | usb_mac.c | 135 !mt76_rr(dev, MT_BBP(IBI, 12))) { in mt76x2u_mac_stop()
|
/linux/drivers/media/common/b2c2/ |
H A D | flexcop-reg.h | 36 /* FlexCop IBI Registers */
|
H A D | flexcop.c | 42 /* global zero for ibi values */
|
/linux/drivers/net/wireless/mediatek/mt76/mt76x0/ |
H A D | initvals_init.h | 93 { MT_BBP(IBI, 11), 0x0FDE8081 },
|
/linux/drivers/net/wireless/mediatek/mt76/ |
H A D | mt76x02_dfs.c | 792 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 D | flexcop-usb.c | 47 * in the IBI address, to make the V8 code simpler. 50 * IBI ADDRESS FORMAT: RHHH BLLL
|
/linux/Documentation/driver-api/i3c/ |
H A D | protocol.rst | 83 This mechanism is called IBI for In Band Interrupts, and as stated in the name,
|
/linux/ |
H A D | CREDITS | 1422 E: pgmdsg@ibi.com
|