On 01/02/23 07:33, Pierre-Louis Bossart wrote: > >> Yes Controller has ACPI scope. Under controller based on >> "mipi-sdw-manager-list" property manager instances will be created. >> Manager and Link terms are interchangeable. >> >> Below is the sample DSDT file if we go with two ACPI companion >> devices. >> >> Scope (\_SB.ACP) >> { >> >> Device (SWC0) >> { >> Name (_ADR, 0x05) // _ADR: Address >> Name(_DSD, Package() { >> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), >> Package () { >> Package (2) {"mipi-sdw-sw-interface-revision", 0x00010000}, >> Package (2) {"mipi-sdw-manager-list", 1}, // v 1.0 >> }, >> ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), // Hierarchical Extension >> Package () { >> Package (2) {"mipi-sdw-link-0-subproperties", "SWM0"}, >> } >> }) // End _DSD >> Name(SWM0, Package() { >> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), >> Package () { >> Package (2) {"mipi-sdw-sw-interface-revision", 0x00010000}, >> // ... place holder for SWM0 additional properties >> } >> }) // End SWM0.SWM >> >> Device (SLV0) { // SoundWire Slave 0 >> Name(_ADR, 0x000032025D131601) >> } // END SLV0 >> >> } // END SWC0 >> >> Device (SWC1) >> { >> Name (_ADR, 0x09) // _ADR: Address >> Name(_DSD, Package() { >> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), >> Package () { >> Package (2) {"mipi-sdw-sw-interface-revision", 0x00010000}, >> Package (2) {"mipi-sdw-manager-list", 1}, >> }, >> ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), >> Package () { >> Package (2) {"mipi-sdw-link-0-subproperties", "SWM0"}, >> >> } >> }) // End _DSD >> Name(SWM0, Package() { >> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), >> Package () { >> Package (2) {"mipi-sdw-sw-interface-revision", 0x00010000}, >> // ... place holder for SWM0 additional properties >> } >> }) // End SWM0.SWM >> >> Device (SLV0) { // SoundWire Slave 0 >> Name(_ADR, 0x000032025D131601) >> } // END SLV0 >> >> } // END SWC1 >> } >> } > that looks good to me. > >> In above case, two manager instances will be created. >> When manager under SWC1 scope tries to add peripheral >> device, In sdw_slave_add() API its failing because peripheral >> device descriptor uses link id followed by 48bit encoded address. >> In above scenarios, both the manager's link id is zero only. > what fails exactly? The device_register() ? > > If yes, what the issue. the device name? device_register() is failing because of duplication of device name. > I wonder if we need to use something like > > "name shall be sdw:bus_id:link:mfg:part:class" > > so as to uniquify the device name, if that was the problem. Yes correct.