162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2020, MIPI Alliance, Inc. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: Nicolas Pitre <npitre@baylibre.com> 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Common IBI related stuff 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef IBI_H 1162306a36Sopenharmony_ci#define IBI_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* 1462306a36Sopenharmony_ci * IBI Status Descriptor bits 1562306a36Sopenharmony_ci */ 1662306a36Sopenharmony_ci#define IBI_STS BIT(31) 1762306a36Sopenharmony_ci#define IBI_ERROR BIT(30) 1862306a36Sopenharmony_ci#define IBI_STATUS_TYPE BIT(29) 1962306a36Sopenharmony_ci#define IBI_HW_CONTEXT GENMASK(28, 26) 2062306a36Sopenharmony_ci#define IBI_TS BIT(25) 2162306a36Sopenharmony_ci#define IBI_LAST_STATUS BIT(24) 2262306a36Sopenharmony_ci#define IBI_CHUNKS GENMASK(23, 16) 2362306a36Sopenharmony_ci#define IBI_ID GENMASK(15, 8) 2462306a36Sopenharmony_ci#define IBI_TARGET_ADDR GENMASK(15, 9) 2562306a36Sopenharmony_ci#define IBI_TARGET_RNW BIT(8) 2662306a36Sopenharmony_ci#define IBI_DATA_LENGTH GENMASK(7, 0) 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* handy helpers */ 2962306a36Sopenharmony_cistatic inline struct i3c_dev_desc * 3062306a36Sopenharmony_cii3c_hci_addr_to_dev(struct i3c_hci *hci, unsigned int addr) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci struct i3c_bus *bus = i3c_master_get_bus(&hci->master); 3362306a36Sopenharmony_ci struct i3c_dev_desc *dev; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci i3c_bus_for_each_i3cdev(bus, dev) { 3662306a36Sopenharmony_ci if (dev->info.dyn_addr == addr) 3762306a36Sopenharmony_ci return dev; 3862306a36Sopenharmony_ci } 3962306a36Sopenharmony_ci return NULL; 4062306a36Sopenharmony_ci} 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#endif 43