Bug 198671

Summary: Lenovo Yoga 11e 3rd generation RFE: add support for second accelerometer
Product: Drivers Reporter: Steven Presser (steve)
Component: I2CAssignee: Hans de Goede (jwrdegoede)
Status: CLOSED CODE_FIX    
Severity: normal CC: andy.shevchenko, jwrdegoede
Priority: P1    
Hardware: All   
OS: Linux   
URL: https://patchwork.kernel.org/patch/10096709/
Kernel Version: 4.12.13 Subsystem:
Regression: No Bisected commit-id:
Attachments: acpidump tables

Description Steven Presser 2018-02-04 18:24:42 UTC
Created attachment 273985 [details]
acpidump tables

At the request of Andy Shevchenko (from iio, I believe), I am filing a bug with relevant hardware information for the Lenovo Thinkpad Yoga 11e 3rd generation.

Andy, acpidump tables are attached; other output follows.

# sudo grep -H 15 /sys/bus/acpi/devices/*/status
/sys/bus/acpi/devices/808622C1:00/status:15
/sys/bus/acpi/devices/808622C1:01/status:15
/sys/bus/acpi/devices/808622C1:02/status:15
/sys/bus/acpi/devices/ATML1000:00/status:15
/sys/bus/acpi/devices/BOSC0200:00/status:15
/sys/bus/acpi/devices/IFX0102:00/status:15
/sys/bus/acpi/devices/INT33FF:00/status:15
/sys/bus/acpi/devices/INT33FF:01/status:15
/sys/bus/acpi/devices/INT33FF:02/status:15
/sys/bus/acpi/devices/INT33FF:03/status:15
/sys/bus/acpi/devices/INTCF1C:01/status:15
/sys/bus/acpi/devices/INTL9C60:01/status:15
/sys/bus/acpi/devices/LEN0068:00/status:15
/sys/bus/acpi/devices/LNXPOWER:00/status:15
/sys/bus/acpi/devices/MSFT0002:01/status:15
/sys/bus/acpi/devices/MSFT9000:00/status:15
/sys/bus/acpi/devices/MSFT9001:00/status:15
/sys/bus/acpi/devices/NXP7471:00/status:15
/sys/bus/acpi/devices/PNP0501:00/status:15
/sys/bus/acpi/devices/PNP0C09:00/status:15
/sys/bus/acpi/devices/WCOM5071:00/status:15
# dmidecode
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
67 structures occupying 2486 bytes.
Table at 0x000E0840.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: LENOVO
	Version: R0AET35W (1.18)
	Release Date: 08/04/2017
	Address: 0xE0000
	Runtime Size: 128 kB
	ROM Size: 6144 kB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		Print screen service is supported (int 5h)
		8042 keyboard services are supported (int 9h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		CGA/mono video services are supported (int 10h)
		NEC PC-98
		ACPI is supported
		USB legacy is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 1.18
	Firmware Revision: 1.9

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: LENOVO
	Product Name: 20GA001FUS
	Version: ThinkPad Yoga 11e 3rd Gen
	Serial Number: LR08TAGY
	UUID: 06613D01-4FB2-11CB-A79B-95031E316FD0
	Wake-up Type: Power Switch
	SKU Number: LENOVO_MT_20GA_BU_Think_FM_ThinkPad Yoga 11e 3rd Gen
	Family: ThinkPad Yoga 11e 3rd Gen

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
	Manufacturer: LENOVO
	Product Name: Intel powered classmate PC
	Version: SDK0J40697 WIN
	Serial Number: A1SH74C00KP
	Asset Tag: Not Available
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Not Available
	Chassis Handle: 0x0000
	Type: Motherboard
	Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
	Manufacturer: LENOVO
	Type: Convertible
	Lock: Not Present
	Version: Not Available
	Serial Number: LR08TAGY
	Asset Tag: No Asset Information
	Boot-up State: Unknown
	Power Supply State: Unknown
	Thermal State: Unknown
	Security Status: Unknown
	OEM Information: 0x00000000
	Height: Unspecified
	Number Of Power Cords: Unspecified
	Contained Elements: 0
	SKU Number: Not Specified

Handle 0x0007, DMI type 4, 42 bytes
Processor Information
	Socket Designation: CHV
	Type: Central Processor
	Family: Celeron
	Manufacturer: Intel(R) Corporation
	ID: C4 06 04 00 FF FB EB BF
	Signature: Type 0, Family 6, Model 76, Stepping 4
	Flags:
		FPU (Floating-point unit on-chip)
		VME (Virtual mode extension)
		DE (Debugging extension)
		PSE (Page size extension)
		TSC (Time stamp counter)
		MSR (Model specific registers)
		PAE (Physical address extension)
		MCE (Machine check exception)
		CX8 (CMPXCHG8 instruction supported)
		APIC (On-chip APIC hardware supported)
		SEP (Fast system call)
		MTRR (Memory type range registers)
		PGE (Page global enable)
		MCA (Machine check architecture)
		CMOV (Conditional move instruction supported)
		PAT (Page attribute table)
		PSE-36 (36-bit page size extension)
		CLFSH (CLFLUSH instruction supported)
		DS (Debug store)
		ACPI (ACPI supported)
		MMX (MMX technology supported)
		FXSR (FXSAVE and FXSTOR instructions supported)
		SSE (Streaming SIMD extensions)
		SSE2 (Streaming SIMD extensions 2)
		SS (Self-snoop)
		HTT (Multi-threading)
		TM (Thermal monitor supported)
		PBE (Pending break enabled)
	Version: Intel(R) Celeron(R) CPU  N3160  @ 1.60GHz
	Voltage: 3.8 V
	External Clock: 83 MHz
	Max Speed: 1660 MHz
	Current Speed: 1600 MHz
	Status: Populated, Enabled
	Upgrade: Slot 1
	L1 Cache Handle: 0x0005
	L2 Cache Handle: 0x0006
	L3 Cache Handle: Not Provided
	Serial Number: To Be Filled By O.E.M.
	Asset Tag: To Be Filled By O.E.M.
	Part Number: To Be Filled By O.E.M.
	Core Count: 4
	Core Enabled: 4
	Thread Count: 4
	Characteristics:
		64-bit capable
		Multi-Core
		Execute Protection
		Enhanced Virtualization
		Power/Performance Control

Handle 0x0004, DMI type 7, 19 bytes
Cache Information
	Socket Designation: L1 Cache
	Configuration: Enabled, Not Socketed, Level 1
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 24 kB
	Maximum Size: 24 kB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Parity
	System Type: Data
	Associativity: Other

Handle 0x0005, DMI type 7, 19 bytes
Cache Information
	Socket Designation: L1 Cache
	Configuration: Enabled, Not Socketed, Level 1
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 32 kB
	Maximum Size: 32 kB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Parity
	System Type: Instruction
	Associativity: 8-way Set-associative

Handle 0x0006, DMI type 7, 19 bytes
Cache Information
	Socket Designation: L2 Cache
	Configuration: Enabled, Not Socketed, Level 2
	Operational Mode: Write Back
	Location: Internal
	Installed Size: 1024 kB
	Maximum Size: 1024 kB
	Supported SRAM Types:
		Synchronous
	Installed SRAM Type: Synchronous
	Speed: Unknown
	Error Correction Type: Single-bit ECC
	System Type: Unified
	Associativity: 16-way Set-associative

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: Keyboard
	External Connector Type: PS/2
	Port Type: Keyboard Port

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: Mouse
	External Connector Type: PS/2
	Port Type: Mouse Port

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: Other
	External Reference Designator: COM 1
	External Connector Type: DB-9 male
	Port Type: Serial Port 16550A Compatible

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: Other
	External Reference Designator: Video
	External Connector Type: DB-15 female
	Port Type: Video Port

Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: Other
	External Reference Designator: HDMI
	External Connector Type: None
	Port Type: Video Port

Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: USB3.0 - 1#
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: USB3.0 - 2#
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: USB2.0 - 3#
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: USB2.0 - 4#
	External Connector Type: Access Bus (USB)
	Port Type: USB

Handle 0x0015, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: Ethernet
	External Connector Type: RJ-45
	Port Type: Network Port

Handle 0x0016, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: SATA Port 1 J8J1
	Internal Connector Type: SAS/SATA Plug Receptacle
	External Reference Designator: None
	External Connector Type: None
	Port Type: SATA

Handle 0x0017, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: SATA Port 2 J7G1
	Internal Connector Type: SAS/SATA Plug Receptacle
	External Reference Designator: None
	External Connector Type: None
	Port Type: SATA

Handle 0x0018, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: None
	Internal Connector Type: None
	External Reference Designator: AC IN
	External Connector Type: Other
	Port Type: Other

Handle 0x0019, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: TPM/PORT 80
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001A, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: HDA 2X8 Header
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001B, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: HDA 8Pin Header
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001C, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: HDA HDMI
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001D, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Scan Matrix Keyboard
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001E, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: SPI Program
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x001F, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: LPC Hot Docking
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0020, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: LPC SIDE BAND
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0021, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: LPC Slot
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0022, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: SATA Power
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0023, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: FP Header
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0024, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: ATX Power
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0025, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: BATT B
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0026, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: BATT A
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0027, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: CPU Fan
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0028, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: XDP
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x0029, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Memory Slot 1
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x002A, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: Memory Slot 2
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x002B, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: FAN PWR
	Internal Connector Type: Other
	External Reference Designator: None
	External Connector Type: None
	Port Type: Other

Handle 0x002C, DMI type 9, 17 bytes
System Slot Information
	Designation: PCI-Express 1 X1
	Type: x4 PCI Express
	Current Usage: Available
	Length: Short
	ID: 1
	Characteristics:
		3.3 V is provided
		Opening is shared
		PME signal is supported
	Bus Address: 0000:00:1c.0

Handle 0x002D, DMI type 9, 17 bytes
System Slot Information
	Designation: PCI-Express 2 X1
	Type: x1 PCI Express
	Current Usage: Available
	Length: Short
	ID: 2
	Characteristics:
		3.3 V is provided
		Opening is shared
		PME signal is supported
	Bus Address: 0000:00:1c.1

Handle 0x002E, DMI type 9, 17 bytes
System Slot Information
	Designation: PCI-Express 3 X1
	Type: x1 PCI Express
	Current Usage: In Use
	Length: Short
	ID: 3
	Characteristics:
		3.3 V is provided
		Opening is shared
		PME signal is supported
	Bus Address: 0000:00:1c.2

Handle 0x002F, DMI type 9, 17 bytes
System Slot Information
	Designation: PCI-Express 4 X1
	Type: x1 PCI Express
	Current Usage: In Use
	Length: Short
	ID: 4
	Characteristics:
		3.3 V is provided
		Opening is shared
		PME signal is supported
	Bus Address: 0000:00:1c.3

Handle 0x0030, DMI type 10, 6 bytes
On Board Device Information
	Type: Video
	Status: Enabled
	Description: Intel(R) Extreme Graphics 3 Controller

Handle 0x0031, DMI type 10, 6 bytes
On Board Device Information
	Type: Sound
	Status: Enabled
	Description: Intel(R) Azalia Audio Device

Handle 0x0032, DMI type 11, 5 bytes
OEM Strings
	String 1: This is the Intel Braswell CRB Platform

Handle 0x0033, DMI type 12, 5 bytes
System Configuration Options

Handle 0x0034, DMI type 13, 22 bytes
BIOS Language Information
	Language Description Format: Abbreviated
	Installable Languages: 6
		en-US
		fr-FR
		ja-JP
		ko-KR
		zh-CHT
		zh-CHS
	Currently Installed Language: en-US

Handle 0x003F, DMI type 15, 31 bytes
System Event Log
	Area Length: 27 bytes
	Header Start Offset: 0x0000
	Header Length: 16 bytes
	Data Start Offset: 0x0010
	Access Method: General-purpose non-volatile data functions
	Access Address: 0x00F0
	Status: Valid, Not Full
	Change Token: 0x00000001
	Header Format: Type 1
	Supported Log Type Descriptors: 4
	Descriptor 1: POST error
	Data Format 1: POST results bitmap
	Descriptor 2: PCI system error
	Data Format 2: None
	Descriptor 3: System reconfigured
	Data Format 3: None
	Descriptor 4: Log area reset/cleared
	Data Format 4: None

Handle 0x0008, DMI type 16, 23 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 8 GB
	Error Information Handle: Not Provided
	Number Of Devices: 1

Handle 0x0009, DMI type 17, 34 bytes
Memory Device
	Array Handle: 0x0008
	Error Information Handle: Not Provided
	Total Width: 8 bits
	Data Width: 8 bits
	Size: 4096 MB
	Form Factor: SODIMM
	Set: None
	Locator: ChannelA-DIMM0
	Bank Locator: BANK 0
	Type: DDR3
	Type Detail: Synchronous
	Speed: 1600 MHz
	Manufacturer: Samsung
	Serial Number: 53482188
	Asset Tag: 9876543210
	Part Number:                   
	Rank: Unknown
	Configured Clock Speed: Unknown

Handle 0x000A, DMI type 19, 31 bytes
Memory Array Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x000FFFFFFFF
	Range Size: 4 GB
	Physical Array Handle: 0x0008
	Partition Width: 2

Handle 0x0035, DMI type 22, 26 bytes
Portable Battery
	Location: Bottom
	Manufacturer: SMP
	Name: LNV-00HW44
	Design Capacity: 42010 mWh
	Design Voltage: 11250 mV
	SBDS Version: 03.01
	Maximum Error: Unknown
	SBDS Serial Number: 05CD
	SBDS Manufacture Date: 2017-04-06
	SBDS Chemistry: LiP
	OEM-specific Information: 0x00000000

Handle 0x003E, DMI type 24, 5 bytes
Hardware Security
	Power-On Password Status: Enabled
	Keyboard Password Status: Not Implemented
	Administrator Password Status: Disabled
	Front Panel Reset Status: Not Implemented

Handle 0x0037, DMI type 32, 11 bytes
System Boot Information
	Status: No errors detected

Handle 0x0038, DMI type 131, 22 bytes
OEM-specific Type
	Header and Data:
		83 16 38 00 01 08 00 00 00 00 00 00 00 00 00 00
		00 00 00 00 00 01
	Strings:
		TVT-Enablement

Handle 0x003D, DMI type 133, 5 bytes
OEM-specific Type
	Header and Data:
		85 05 3D 00 01
	Strings:
		KHOIHGIUCCHHII

Handle 0x000B, DMI type 134, 13 bytes
OEM-specific Type
	Header and Data:
		86 0D 0B 00 27 04 17 20 00 00 00 00 00

Handle 0x003B, DMI type 134, 16 bytes
OEM-specific Type
	Header and Data:
		86 10 3B 00 00 53 54 4D 20 01 01 00 00 03 01 02
	Strings:
		TPM INFO
		System Reserved

Handle 0x0039, DMI type 135, 34 bytes
OEM-specific Type
	Header and Data:
		87 22 39 00 54 50 07 04 01 06 01 01 02 00 02 01
		02 00 03 01 02 00 04 01 02 00 05 01 02 00 06 01
		02 00

Handle 0x003C, DMI type 135, 47 bytes
OEM-specific Type
	Header and Data:
		87 2F 3C 00 54 50 07 02 42 41 59 20 49 2F 4F 20
		04 00 01 01 1C 00 13 00 02 00 00 00 00 01 00 00
		00 00 00 00 00 00 01 01 FF 00 00 00 00 00 00

Handle 0x0040, DMI type 135, 18 bytes
OEM-specific Type
	Header and Data:
		87 12 40 00 54 50 07 01 01 00 01 00 00 00 01 00
		00 00

Handle 0x0041, DMI type 140, 15 bytes
OEM-specific Type
	Header and Data:
		8C 0F 41 00 4C 45 4E 4F 56 4F 0B 07 01 01 02
	Strings:
		R0AHT25W
		04/20/2016

Handle 0x0042, DMI type 140, 43 bytes
OEM-specific Type
	Header and Data:
		8C 2B 42 00 4C 45 4E 4F 56 4F 0B 08 01 03 12 02
		04 11 28 03 12 02 04 10 10 03 12 02 04 10 01 03
		12 02 04 07 07 03 12 02 04 06 20

Handle 0x003A, DMI type 200, 7 bytes
OEM-specific Type
	Header and Data:
		C8 07 3A 00 01 02 03
	Strings:
		152D
		LI8 
		BQ5A51

Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table
Comment 1 Andy Shevchenko 2018-02-06 16:39:45 UTC
Thank you for this information.
I would like to confirm that earlier published series [1] fixes the issue.

[1]: https://bitbucket.org/andy-shev/linux/branch/topic/iio-acpi
Comment 2 Steven Presser 2018-02-06 19:13:55 UTC
I am working on confirming this.  The first kernel I built didn't boot - I suspect distro-specific issues, as it never left the GRUB boot menu.

I will keep you updated as I am able to work on the issue.
Comment 3 Andy Shevchenko 2020-10-12 14:42:18 UTC
I'm about to close this bug since nobody appear to test and confirm the state.
So I leave it in need info state for a while (day or two) and then close.
Comment 4 Steven Presser 2020-10-12 15:44:38 UTC
Hi Andy,

My apologies, this slipped my plate. I'm currently away from the machine.  Would you mind holding it open for a couple weeks so I can get back to that machine and test it?

Thanks,
Steve
Comment 5 Andy Shevchenko 2020-10-12 17:44:26 UTC
It seems I lost my branch with patches and I have no clue how I solved the original issue. Cc'ed also to Hans de Goede.
Comment 6 Hans de Goede 2020-10-27 16:21:42 UTC
(In reply to Andy Shevchenko from comment #5)
> It seems I lost my branch with patches and I have no clue how I solved the
> original issue. Cc'ed also to Hans de Goede.

I believe your attempt to fix this was discussed here:

https://patchwork.kernel.org/project/linux-iio/patch/20181030144706.6737-1-andriy.shevchenko@linux.intel.com/

So basically we have 2 choices here:

1. Go with Jeremy's patch (which is reasonable clean and simple); or
2. Use i2c-multi-instantiate.c

I see that since the original discussion i2c-multi-instantiate now already allows for there to be less I2C resources declared in the ACPI tables then in the i2c_inst_data array for the id, so that part is solved.

So I guess that option 2 would be the most cleanest thing to do here and this would also be consistent with how we deal with other cases where there are multiple chips declared in a single ACPI device/resource table.

Andy, how does going with option 2 here sound to you?
Comment 7 Andy Shevchenko 2020-10-27 16:40:44 UTC
Perhaps I (In reply to Hans de Goede from comment #6)
> (In reply to Andy Shevchenko from comment #5)
> > It seems I lost my branch with patches and I have no clue how I solved the
> > original issue. Cc'ed also to Hans de Goede.

Perhaps I removed it because it used to have some cleanups and i2c-multi-instantiate patch at the end...

> I believe your attempt to fix this was discussed here:
> 
> https://patchwork.kernel.org/project/linux-iio/patch/20181030144706.6737-1-
> andriy.shevchenko@linux.intel.com/
> 
> So basically we have 2 choices here:
> 
> 1. Go with Jeremy's patch (which is reasonable clean and simple); or
> 2. Use i2c-multi-instantiate.c
> 
> I see that since the original discussion i2c-multi-instantiate now already
> allows for there to be less I2C resources declared in the ACPI tables then
> in the i2c_inst_data array for the id, so that part is solved.
> 
> So I guess that option 2 would be the most cleanest thing to do here and
> this would also be consistent with how we deal with other cases where there
> are multiple chips declared in a single ACPI device/resource table.
> 
> Andy, how does going with option 2 here sound to you?

Yes, I think that is proper way to go. Even if there is collision, we would be able to simple check amount of resources in the original driver and bail out from probe or alike type of quirk.
Comment 8 Hans de Goede 2020-11-25 08:40:58 UTC
So unfortunately using i2c-multi-instantiate.c for this will not work. So I've dusted off Jeremy's patch fixing this inside the bmc150-accel-i2c.c code and posted that upstream, see the commit msg for why the i2c-multi-instantiate.c approach will not work.

Series starts here:
https://lore.kernel.org/linux-iio/20201125083618.10989-1-hdegoede@redhat.com/T/#t

Modified version of Jeremy's patch:
https://lore.kernel.org/linux-iio/20201125083618.10989-3-hdegoede@redhat.com/
Comment 9 Hans de Goede 2020-11-25 17:14:25 UTC
Lets close this since patches for this are now available. I will post a v2 addressing the review remarks soon.