06 Jan, 2021
1 commit
-
[ Upstream commit 59165d16c699182b86b5c65181013f1fd88feb62 ]
Add the missing destroy_workqueue() before return from
i3c_master_register in the error handling case.Signed-off-by: Qinglang Miao
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/20201028091543.136167-1-miaoqinglang@huawei.com
Signed-off-by: Sasha Levin
18 Oct, 2020
1 commit
-
Pull i3c updates from Boris Brezillon:
- Fix DAA for the pre-reserved address case
- Fix an error path in the cadence driver
* tag 'i3c/for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
i3c: master: Fix error return in cdns_i3c_master_probe()
i3c: master: fix for SETDASA and DAA process
i3c: master add i3c_master_attach_boardinfo to preserve boardinfo
07 Oct, 2020
1 commit
-
Fix to return negative error code -ENOMEM from the error handling
case instead of 0.Fixes: 603f2bee2c54 ("i3c: master: Add driver for Cadence IP")
Signed-off-by: Jing Xiangfeng
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/20200911033350.23904-1-jingxiangfeng@huawei.com
14 Sep, 2020
1 commit
-
This patch fix following issue.
Controller slots blocked for devices with static_addr
but no init_dyn_addr may limit the number of I3C devices
on the bus which gets dynamic address in DAA. So
instead of attaching all the devices with static_addr,
now we only attach the devices which successfully
complete SETDASA. For remaining devices with init_dyn_addr,
i3c_master_add_i3c_dev_locked() will try to set requested
dynamic address after DAA.Signed-off-by: Parshuram Thombare
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/1598337109-14770-1-git-send-email-pthombar@cadence.com
24 Aug, 2020
1 commit
-
Replace the existing /* fall through */ comments and its variants with
the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
fall-through markings when it is the case.[1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through
Signed-off-by: Gustavo A. R. Silva
19 Aug, 2020
1 commit
-
Boardinfo was lost if I3C object for devices with boardinfo
available are not created or not added to the I3C device list
because of some failure e.g. SETDASA failed, retrieve info failed etc
This patch adds i3c_master_attach_boardinfo which scan boardinfo list
in the master object and 'attach' it to the I3C device object.Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Signed-off-by: Parshuram Thombare
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/1590053542-389-1-git-send-email-pthombar@cadence.com
16 Apr, 2020
1 commit
-
According to the I3C spec v1.1 document, GETMRL's payload is 2 bytes,
with an optional 3rd byte if the IBI private payload is larger than
1 byte. The whole GETMRL may also be optional so max_ibi_len already
defaults to 1 if BCR_IBI_PAYLOAD prior to the i3c_master_getmrl_locked()
call.Signed-off-by: Nicolas Pitre
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/nycvar.YSQ.7.76.2004151623060.2671@knanqh.ubzr
29 Mar, 2020
1 commit
-
Move away from the deprecated API.
Signed-off-by: Wolfram Sang
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/20200326211002.13241-2-wsa+renesas@sang-engineering.com
28 Feb, 2020
3 commits
-
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:struct foo {
int stuff;
struct boo array[];
};By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.Also, notice that, dynamic memory allocations won't be affected by
this change:"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]This issue was found with the help of Coccinelle.
[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")Signed-off-by: Gustavo A. R. Silva
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/20200227131307.GA24935@embeddedor -
Simply match against ->match_flags instead of trying to be smart and
fix drivers inconsistent ID tables.Signed-off-by: Boris Brezillon
Signed-off-by: Vitor Soares
Link: https://lore.kernel.org/linux-i3c/8c5d6523e1c161783db834a3447954f7fd6267e6.1582796652.git.vitor.soares@synopsys.com -
Create a modalias sysfs attribute for i3c devices.
Signed-off-by: Boris Brezillon
Signed-off-by: Vitor Soares
Link: https://lore.kernel.org/linux-i3c/a90f64f830128cd12762153de7828b775574c156.1582796652.git.vitor.soares@synopsys.com
27 Feb, 2020
1 commit
-
file2alias uses %X formatters. Fix typos in the MODALIAS uevent to print
the part and ext IDs in uppercase.Signed-off-by: Boris Brezillon
Signed-off-by: Vitor Soares
Link: https://lore.kernel.org/linux-i3c/9ac5f1f8413fbb0481de76b5e43f2f4e1b2dc49f.1582796652.git.vitor.soares@synopsys.com
18 Feb, 2020
1 commit
-
We already have the master device in a variable, reuse it.
Signed-off-by: Wolfram Sang
Acked-by: Vitor Soares
Reviewed-by: Geert Uytterhoeven
Signed-off-by: Boris Brezillon
Link: https://lore.kernel.org/linux-i3c/20200214145853.24762-1-wsa+renesas@sang-engineering.com
13 Jan, 2020
3 commits
-
For today the reattach function only update the device address on the
controller.Update the location to the first available too, will optimize the
enumeration process avoiding additional checks to keep the available
positions on address table consecutive.Signed-off-by: Vitor Soares
Reviewed-by: Boris Brezillon
Signed-off-by: Boris Brezillon -
Use devm_platform_ioremap_resource() to simplify code.
Signed-off-by: Yangtao Li
Signed-off-by: Boris Brezillon -
Use devm_platform_ioremap_resource() to simplify code.
Signed-off-by: Yangtao Li
Acked-by: Vitor Soares
Signed-off-by: Boris Brezillon
09 Dec, 2019
2 commits
-
i3c_bus_set_mode function is only used in master.c.
Make it static to avoid warning when compiling with W=1.Signed-off-by: Benjamin Gaignard
Signed-off-by: Boris Brezillon -
This patch adds support for THD_DEL (Data Hold Delay) to Cadence
I3C master constoller driver.As per MIPI I3C Specification 1.0, Table 75 (page 142) defines
non-zero minimal tHD_PP timing on master output (Fig 65). This
setting allows to meet this timing on master's soc outputs,
regardless of PCB balancing.Signed-off-by: Przemyslaw Gaj
Signed-off-by: Boris Brezillon
31 Oct, 2019
1 commit
-
Fix misspellings of "discovered".
Signed-off-by: Geert Uytterhoeven
Signed-off-by: Boris Brezillon
01 Oct, 2019
1 commit
-
Since we have i3c_dev_get_master() available, use it.
Signed-off-by: Vitor Soares
Signed-off-by: Boris Brezillon
27 Aug, 2019
1 commit
-
Since we have dev_to_i3cmaster() available, use it.
Signed-off-by: Axel Lin
Signed-off-by: Boris Brezillon
12 Aug, 2019
1 commit
-
In i3c_master_getmwl_locked(), the buffer used for the dest payload data is
allocated using kzalloc() in i3c_ccc_cmd_dest_init(). Later on, the length
of the dest payload data is checked against 'sizeof(*mwl)'. If they are not
equal, -EIO is returned to indicate the error. However, the allocated
buffer is not deallocated on this path, leading to a memory leak.To fix the above issue, free the buffer before returning the error.
Signed-off-by: Wenwen Wang
Signed-off-by: Boris Brezillon
11 Aug, 2019
3 commits
-
I need to store address and lvr value for I2C devices without static definition
in DT. This allows secondary master to transmit DEFSLVS command properly.Main changes between v4 and v5:
- Change in defslvs to use addr and lvr from i2c_dev_desc structure
- Change in CDNS and DW drivers to use addr and lvr from i2c_dev_desc structureSigned-off-by: Przemyslaw Gaj
Signed-off-by: Boris Brezillon -
This simplifies and standardizes slot manipulation code
by using for_each_set_bit() library function.Signed-off-by: Andy Shevchenko
Signed-off-by: Boris Brezillon -
Each iteration of for_each_available_childe_of_node puts the previous
node, but in the case of a return from the middle of the loop, there
is no put, thus causing a memory leak. Add an of_node_put before the
return.
Issue found with Coccinelle.Signed-off-by: Nishka Dasgupta
Signed-off-by: Boris Brezillon
27 Jul, 2019
1 commit
-
Some I3C device drivers need to know which entry matches the
i3c_device object passed to the probe functionLet's move i3c_device_match_id() to device.c and export it so it can be
used by drivers.Signed-off-by: Vitor Soares
Signed-off-by: Boris Brezillon
10 Jul, 2019
1 commit
-
Pull ic3 updates from Boris Brezillon:
- Drop support for 10-bit I2C addresses
- Add support for limited bus mode
- Fix the Cadence DT binding doc
- Use struct_size() to allocate a DEFSLVS packet
* tag 'i3c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
i3c: master: Use struct_size() helper
dt-bindings: i3c: cdns: Use correct cells for I2C device
i3c: dw: add limited bus mode support
i3c: add mixed limited bus mode
i3c: fix i2c and i3c scl rate by bus mode
dt-bindings: i3c: Document dropped support for I2C 10 bit devices
i3c: Drop support for I2C 10 bit addresing
04 Jul, 2019
1 commit
-
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes, in particular in the
context in which this code is being used.So, replace the following form:
sizeof(*defslvs) + ((ndevs - 1) * sizeof(struct i3c_ccc_dev_desc))
with:
struct_size(defslvs, slaves, ndevs - 1)
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva
Signed-off-by: Boris Brezillon
20 Jun, 2019
3 commits
-
This patch add limited bus mode support for DesignWare i3c master
Signed-off-by: Vitor Soares
Cc: Boris Brezillon
Cc:
Signed-off-by: Boris Brezillon -
The i3c bus spec defines a bus configuration where i2c devices don't
have a 50ns filter but support SCL running at SDR max rate (12.5MHz).This patch introduces the limited bus mode so that users can use
a higher speed in presence of i2c devices index 1.Signed-off-by: Vitor Soares
Cc: Boris Brezillon
Cc:
Signed-off-by: Boris Brezillon -
Currently the I3C framework limits SCL frequency to FM speed when
dealing with a mixed slow bus, even if all I2C devices are FM+ capable.The core was also not accounting for I3C speed limitations when
operating in mixed slow mode and was erroneously using FM+ speed as the
max I2C speed when operating in mixed fast mode.Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Signed-off-by: Vitor Soares
Cc: Boris Brezillon
Cc:
Cc:
Signed-off-by: Boris Brezillon
28 May, 2019
1 commit
-
This patch drops support for I2C devices with 10 bit addressing. When I2C
device with 10 bit address is defined in DT, I3C master registration fails.Address space for I2C devices has been reduced and ->i2c_funcs() hook has been
removed.Because this patch series dropped support for 10 bit I2C devices, support is
also dropped in Cadence I3C master driver and Synopsys DesignWare I3C master
driver.Signed-off-by: Przemyslaw Gaj
Signed-off-by: Boris Brezillon
21 May, 2019
1 commit
-
Add SPDX license identifiers to all Make/Kconfig files which:
- Have no license information of any form
These files fall under the project license, GPL v2 only. The resulting SPDX
license identifier is:GPL-2.0-only
Signed-off-by: Thomas Gleixner
Signed-off-by: Greg Kroah-Hartman
07 May, 2019
1 commit
-
Pull i3c update from Boris Brezillon:
- Fix a shift wrap bug in the core
- Remove dead code in the DW driver
* tag 'i3c/for-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
i3c: Fix a shift wrap bug in i3c_bus_set_addr_slot_status()
i3c: master: dw: remove dead code from dw_i3c_master_*_xfers()
06 May, 2019
1 commit
-
The problem here is that addr can be I3C_BROADCAST_ADDR (126). That
means we're shifting by (126 * 2) % 64 which is 60. The
I3C_ADDR_SLOT_STATUS_MASK is an enum which is an unsigned int in GCC
so shifts greater than 31 are undefined.Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Cc:
Signed-off-by: Dan Carpenter
Signed-off-by: Boris Brezillon
10 Apr, 2019
2 commits
-
The controller was being disabled incorrectly. The correct way is to clear
the DEV_CTRL_ENABLE bit.Fix this by clearing this bit.
Cc: Boris Brezillon
Cc:
Fixes: 1dd728f5d4d4 ("i3c: master: Add driver for Synopsys DesignWare IP")
Signed-off-by: Vitor Soares
Signed-off-by: Boris Brezillon -
The validation of random PID should be done by checking the
boardinfo->pid instead of info.pid which is empty.Doing the change the info struture declaration is no longer necessary.
Cc: Boris Brezillon
Cc:
Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Signed-off-by: Vitor Soares
Signed-off-by: Boris Brezillon
30 Mar, 2019
1 commit
-
Detected by CoverityScan (Event result_independent_of_operands):
"(i3c_xfers + i).len > 65536" is always false regardless of the values
of its operands. This occurs as the logical operand of "if""(i2c_xfers + i).len > 65536" is always false regardless of the values
of its operands. This occurs as the logical operand of "if"Signed-off-by: Vitor Soares
Signed-off-by: Boris Brezillon
05 Mar, 2019
1 commit
-
Pull i3c updates from Boris Brezillon:
- Add a /* fall-through */ comment in the dw-i3c-master driver
- Update the I3C entries in MAINTAINERS to add an IRC chan
* tag 'i3c/for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
i3c: master: dw-i3c-master: mark expected switch fall-through
MAINTAINERS: Add an IRC channel for the I3C subsystem
28 Feb, 2019
1 commit
-
In preparation to enabling -Wimplicit-fallthrough, mark switch
cases where we are expecting to fall through.This patch fixes the following warning:
drivers/i3c/master/dw-i3c-master.c: In function ‘dw_i3c_master_bus_init’:
drivers/i3c/master/dw-i3c-master.c:603:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
if (ret)
^
drivers/i3c/master/dw-i3c-master.c:605:2: note: here
case I3C_BUS_MODE_PURE:
^~~~Warning level 3 was used: -Wimplicit-fallthrough=3
This patch is part of the ongoing efforts to enable
-Wimplicit-fallthrough.Signed-off-by: Gustavo A. R. Silva
Acked-by: Vitor Soares
Signed-off-by: Boris Brezillon