Re: [PATCH v5 6/7] i2c: designware: enable SLAVE in platform module
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2016-12-28 17:15:25
Also in:
linux-i2c, lkml
On Wed, 2016-12-28 at 16:41 +0000, Luis Oliveira wrote:
On 28-Dec-16 16:31, Andy Shevchenko wrote:quoted
On Wed, 2016-12-28 at 15:53 +0000, Luis Oliveira wrote:quoted
On 28-Dec-16 15:44, Andy Shevchenko wrote:quoted
On Wed, 2016-12-28 at 14:43 +0000, Luis Oliveira wrote:quoted
- Slave mode selected in platform module (devicetree support only) - Check for ACPI - not supported in SLAVE mode: - Changed the ifndef style to the use of ACPI_HANDLE that returns NULL if the device was not enumerated from ACPI namespace.I'm not sure what is wrong with ACPI?I dont have a way to test it. Just that.Okay, can you provide an excerpt to see how it will look like in DTS?Yes, it looks like this now: i2c@0x2000 { compatible = "snps,designware-i2c"; #address-cells = <1>; #size-cells = <0>; reg = <0x2000 0x100>; clock-frequency = <400000>; clocks = <&i2cclk>; interrupts = <0>; eeprom@64 { compatible = "linux,slave-24c02"; reg = <0x40000064>; }; };
+1 to Carlos' comment.
quoted
quoted
quoted
quoted
- dev->functionality = I2C_FUNC_10BIT_ADDR | DW_IC_DEFAULT_FUNCTIONALITY; - - i2c_dw_configure_master(pdev); + if (ACPI_HANDLE(&pdev->dev) == NULL) {I don't think you need this at all.This is to avoid the use of the "ifdef" style I used before.My point is to drop it completely.quoted
quoted
quoted
+ device_for_each_child_node(&pdev->dev, child) {This is resource agnostic.quoted
+ fwnode_property_read_u32(child, "reg", ®);This is as well.Are you suggesting I use of_ functions?Nope. See above.
So, ACPI has a property to support slave mode for I2CSerialBus() macro.
I would propose to create a helper function in i2c-core.c which will be
responsible for mode detection
... i2c_slave_mode_detect()
{
...
if (IS_BUILTIN(CONFIG_OF) && dev->of_node) {
... (use of_*() here) ...
} else if (IS_BUILTIN(CONFIG_ACPI) && ACPI_HANDLE(dev))
dev_dbg(..., "ACPI slave is not supported yet\n");
... to master ...
} else {
... default to master ...
}
}
EXPORT_...();
Make it as a separate patch.
--
Andy Shevchenko [off-list ref]
Intel Finland Oy