On Fri, Feb 5, 2021 at 8:41 PM Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > On Fri, Feb 5, 2021 at 8:25 PM Andy Shevchenko > <andy.shevchenko@xxxxxxxxx> wrote: > > On Fri, Feb 5, 2021 at 7:25 PM Calvin Johnson > > <calvin.johnson@xxxxxxxxxxx> wrote: > > > On Fri, Jan 22, 2021 at 09:12:52PM +0530, Calvin Johnson wrote: > > > > ... > > > > > > + rc = fwnode_property_match_string(child, "compatible", "ethernet-phy-ieee802.3-c45"); > > > With ACPI, I'm facing some problem with fwnode_property_match_string(). It is > > > unable to detect the compatible string and returns -EPROTO. > > > > > > ACPI node for PHY4 is as below: > > > > > > Device(PHY4) { > > > Name (_ADR, 0x4) > > > Name(_CRS, ResourceTemplate() { > > > Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) > > > { > > > AQR_PHY4_IT > > > } > > > }) // end of _CRS for PHY4 > > > Name (_DSD, Package () { > > > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > > > Package () { > > > > Package () {"compatible", "ethernet-phy-ieee802.3-c45"} > > I guess converting this to > Package () {"compatible", Package() {"ethernet-phy-ieee802.3-c45"}} > will solve it. For the record, it doesn't mean there is no bug in the code. DT treats a single string as an array, but ACPI doesn't. And this is specific to _match_string() because it has two passes. And the first one fails. While reading a single string as an array of 1 element will work I believe. > > > } > > > > }) > > > } // end of PHY4 > > > > > > What is see is that in acpi_data_get_property(), > > > propvalue->type = 0x2(ACPI_TYPE_STRING) and type = 0x4(ACPI_TYPE_PACKAGE). > > > > > > Any help please? > > > > > > fwnode_property_match_string() works fine for DT. > > > > Can you show the DT node which works and also input for the > > )match_string() (i.o.w what exactly you are trying to match with)? -- With Best Regards, Andy Shevchenko