On 8/17/23 10:12, Mark Brown wrote: > On Thu, Aug 17, 2023 at 09:17:50AM -0500, Pierre-Louis Bossart wrote: > >>> + goto out; >>> + } >>> + /* Read the primary device as the whole */ >> >> I can't figure out what this comment means > > It's part of... > >>> + dev_err(tas_dev->dev, "%s, regmap doesn't exist.\n", >>> + __func__); >>> + return -EINVAL; >>> + } >>> + /* Read the primary device */ >> >> What is a primary device? > > ...a thing where they're trying to present multiple devices as a unified > device with grouped control, it looks like there's some hardware support > for this. Let me clarify the comment: SDCA peripheral can have multiple functions, each with its own address space and can operate independently. So I am just trying to have clarity on what 'device' means here. >>> + /* Failed got calibration data from EFI. */ > >> I don't get what the dependency on EFI is. First time I see a codec >> needing this. > >> Please describe in details what you are trying to accomplish. > > It seems fairly normal to store calibration details in the device > firmware? No objection on the device firmware, but why use an EFI variable? There is on-going work to standardize with ACPI, and there's also a request_firmware(). Not sure what the direction is to read from an EFI variable. I've been in SDCA circles since the beginning and never heard about this, ever. I am not saying it's bad, just surprised and curious on a 3rd way of getting information needed for initialization. >>> + if (crc == tmp_val[21]) { >>> + time64_to_tm(tmp_val[20], 0, tm); >>> + dev_dbg(tas_priv->dev, "%4ld-%2d-%2d, %2d:%2d:%2d\n", >>> + tm->tm_year, tm->tm_mon, tm->tm_mday, >>> + tm->tm_hour, tm->tm_min, tm->tm_sec); > >> What is this about? Why would a codec care about time? > > I can see someone finding it helpful to confirm when the calibration data > that got applied was generated to make sure they're testing/using what > they thought they were. Ah yes, I missed that. I wasn't sure if this was a log on when the calibration finished, if this is a log on when the calibration data was generated that's a different story indeed. >> In addition, it's rather surprising that on attachment there is not a >> single regmap access? > > Don't know if there's something different with Soundwire but for I2C/SPI > devices it's a reasonable pattern to only actually start initialising > the registers when the device actually becomes active. Not checked that > this is actually happening. that's precisely the point, there's an io_init() routine which is when the peripheral is attached on the bus and the earliest time when the registers can be initialized. But there isn't a single initialization happening, which is different to all existing SoundWire codec drivers. Maybe it's fine, I am just asking the question if this was intentional.