On 2/14/19 7:45 AM, Andy Shevchenko wrote:
On Wed, Feb 13, 2019 at 04:07:28PM -0600, Pierre-Louis Bossart wrote:
From: Liam Girdwood liam.r.girdwood@linux.intel.com
Add operation pointers that can be called by core to control a wide variety of DSP targets. The DSP HW drivers will fill in these operations.
+int snd_sof_pci_update_bits_unlocked(struct snd_sof_dev *sdev, u32 offset,
u32 mask, u32 value)
+{
- struct pci_dev *pci = to_pci_dev(sdev->dev);
- unsigned int old, new;
- u32 ret = ~0; /* explicit init to remove uninitialized use warnings */
In case you handle pci_read_config_dword() errors, would you get same warning?
Something like
unsigned int old, new; int ret;
ret = pci_read_config_dword(..., &old); if (ret) return -ENXIO;
...
will give it a try again, I remember trying when we cleaned-up the code but can't recall this part.
I just did a git grep pci_read_config_dword and 99% of the calls don't check for any errors. Not an excuse but there isn't a clear pattern here.
I really don't like such assignments that potentially can shadow a real corner cases.
Me neither, we've removed a lot of those assignments that were unnecessary. cppcheck was the most useful tool for these local variables.
- pci_read_config_dword(pci, offset, &ret);
- old = ret;
- dev_dbg(sdev->dev, "Debug PCIR: %8.8x at %8.8x\n", old & mask, offset);
- new = (old & (~mask)) | (value & mask);
(~mask) -> ~mask.
yes, will fix.