Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config

From: Lan Tianyu
Date: Mon May 19 2014 - 05:45:32 EST


On 05/19/2014 04:49 PM, Mika Westerberg wrote:
On Sat, May 17, 2014 at 07:48:34PM +0200, Wolfram Sang wrote:
On Tue, Apr 29, 2014 at 11:16:09AM +0300, Mika Westerberg wrote:
On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
This patch is to add CONFIG_I2C_ACPI. Current there is a race between
removing I2C ACPI operation region and ACPI AML code accessing.
So make i2c core built-in if CONFIG_I2C_ACPI is set.

Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx>
---
drivers/i2c/Kconfig | 17 ++++++++++++++++-
drivers/i2c/Makefile | 2 +-
include/linux/i2c.h | 2 +-
3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 7b7ea32..c670d49 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -2,7 +2,9 @@
# I2C subsystem configuration
#

-menuconfig I2C
+menu "I2C support"
+
+config I2C
tristate "I2C support"
select RT_MUTEXES
---help---
@@ -21,6 +23,17 @@ menuconfig I2C
This I2C support can also be built as a module. If so, the module
will be called i2c-core.

+config I2C_ACPI
+ bool "I2C ACPI support"
+ select I2C
+ depends on ACPI
+ default y
+ help
+ Say Y here if you want to enable I2C ACPI function. ACPI table
+ provides I2C slave devices' information to enumerate these devices.
+ This option also allows ACPI AML code to access I2C slave devices
+ via I2C ACPI operation region to fulfill ACPI method.

I would prefer something like:

Say Y here if you want to enable ACPI I2C support. This includes support
for automatic enumeration of I2C slave devices and support for ACPI I2C
Operation Regions. Operation Regions allow firmware (BIOS) code to
access I2C slave devices, such as smart batteries through an I2C host
controller driver.

But it is really up to you so,

Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>

How does this fit into the context of
55e71edb81b2b45273e7b284cce13ff24bde846f ("i2c: move ACPI helpers into
the core")?

With that commit we moved ACPI code to live inside I2C module (given
that it was compiled as a module). However, you still can remove that
module from userspace.

With this patch we make sure that the I2C core can't be removed if you
have ACPI enabled. This prevents the potential race.


Yes, these are the two patches' purposes. Thanks Mika's explanation. If you like, I can merge them into one patch.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/