All of lore.kernel.org
 help / color / mirror / Atom feed
* sound/soc/codecs/rt1320-sdw.c:1439 rt1320_dspfw_load_code() warn: inconsistent indenting
@ 2026-07-16  8:53 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-16  8:53 UTC (permalink / raw)
  To: Shuming Fan; +Cc: oe-kbuild-all, linux-kernel, Mark Brown

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   58717b2a1365d06c8c64b72aa948541b53fe31eb
commit: da1682d5e8b53a51072552844c551b1b784e52c2 ASoC: rt1320: support calibration and temperature/r0 loading
date:   7 months ago
config: sparc-randconfig-r073-20260716 (https://download.01.org/0day-ci/archive/20260716/202607161641.MODaAlAh-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 16.1.0
smatch: v0.5.0-9185-gbcc58b9c

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: da1682d5e8b5 ("ASoC: rt1320: support calibration and temperature/r0 loading")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607161641.MODaAlAh-lkp@intel.com/

smatch warnings:
sound/soc/codecs/rt1320-sdw.c:1439 rt1320_dspfw_load_code() warn: inconsistent indenting

vim +1439 sound/soc/codecs/rt1320-sdw.c

  1438	
> 1439		struct snd_soc_dapm_context *dapm =
  1440			snd_soc_component_get_dapm(rt1320->component);
  1441		struct device *dev = &rt1320->sdw_slave->dev;
  1442		unsigned int val, i, fw_offset, fw_ready;
  1443		unsigned int fw_status_addr;
  1444		struct rt1320_dspfwheader *fwheader;
  1445		struct rt1320_imageinfo *ptr_img;
  1446		struct sdw_bpt_section sec[10];
  1447		const struct firmware *fw = NULL;
  1448		unsigned char *fw_data;
  1449		bool dev_fw_match = false;
  1450		static const char hdr_sig[] = "AFX";
  1451		unsigned int hdr_size = 0;
  1452		const char *dmi_vendor, *dmi_product, *dmi_sku;
  1453		char vendor[128], product[128], sku[128];
  1454		char *ptr_vendor, *ptr_product, *ptr_sku;
  1455		char filename[128];
  1456	
  1457		switch (rt1320->dev_id) {
  1458		case RT1320_DEV_ID:
  1459			fw_status_addr = RT1320_DSPFW_STATUS_ADDR;
  1460			break;
  1461		case RT1321_DEV_ID:
  1462			fw_status_addr = RT1321_DSPFW_STATUS_ADDR;
  1463			break;
  1464		default:
  1465			dev_err(dev, "%s: Unknown device ID %d\n", __func__, rt1320->dev_id);
  1466			return;
  1467		}
  1468	
  1469		dmi_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
  1470		dmi_product = dmi_get_system_info(DMI_PRODUCT_NAME);
  1471		dmi_sku = dmi_get_system_info(DMI_PRODUCT_SKU);
  1472	
  1473		if (dmi_vendor && dmi_product && dmi_sku) {
  1474			strscpy(vendor, dmi_vendor);
  1475			strscpy(product, dmi_product);
  1476			strscpy(sku, dmi_sku);
  1477			ptr_vendor = &vendor[0];
  1478			ptr_product = &product[0];
  1479			ptr_sku = &sku[0];
  1480			ptr_vendor = strsep(&ptr_vendor, " ");
  1481			ptr_product = strsep(&ptr_product, " ");
  1482			ptr_sku = strsep(&ptr_sku, " ");
  1483	
  1484			dev_dbg(dev, "%s: DMI vendor=%s, product=%s, sku=%s\n", __func__,
  1485				vendor, product, sku);
  1486	
  1487			snprintf(filename, sizeof(filename),
  1488				 "realtek/rt1320/rt1320_%s_%s_%s.dat", vendor, product, sku);
  1489			dev_dbg(dev, "%s: try to load FW file %s\n", __func__, filename);
  1490		} else if (rt1320->dspfw_name) {
  1491			snprintf(filename, sizeof(filename), "rt1320_%s.dat",
  1492				 rt1320->dspfw_name);
  1493			dev_dbg(dev, "%s: try to load FW file %s\n", __func__, filename);
  1494		} else {
  1495			dev_warn(dev, "%s: Can't find proper FW file name\n", __func__);
  1496			return;
  1497		}
  1498	
  1499		snd_soc_dapm_mutex_lock(dapm);
  1500		regmap_write(rt1320->regmap,
  1501				SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23,
  1502					RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x00);
  1503		rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 0x00);
  1504	
  1505		regmap_read(rt1320->regmap, fw_status_addr, &fw_ready);
  1506		fw_ready &= 0x1;
  1507		if (fw_ready) {
  1508			dev_dbg(dev, "%s, DSP FW was already\n", __func__);
  1509			rt1320->fw_load_done = true;
  1510			goto _exit_;
  1511		}
  1512	
  1513		/* change to IRAM */
  1514		regmap_update_bits(rt1320->regmap, 0xf01e, 0x80, 0x00);
  1515	
  1516		request_firmware(&fw, filename, dev);
  1517		if (fw) {
  1518			fwheader = (struct rt1320_dspfwheader *)fw->data;
  1519			dev_dbg(dev, "%s, fw sync = 0x%x, num=%d, crc=0x%x\n", __func__,
  1520				fwheader->sync, fwheader->num, fwheader->crc);
  1521	
  1522			if (fwheader->sync != 0x0a1c5679) {
  1523				dev_err(dev, "%s: FW sync error\n", __func__);
  1524				release_firmware(fw);
  1525				goto _exit_;
  1526			}
  1527	
  1528			fw_offset = sizeof(struct rt1320_dspfwheader) + (sizeof(struct rt1320_imageinfo) * fwheader->num);
  1529			dev_dbg(dev, "%s, fw_offset = 0x%x\n", __func__, fw_offset);
  1530	
  1531			regcache_cache_bypass(rt1320->regmap, true);
  1532	
  1533			for (i = 0; i < fwheader->num; i++) {
  1534				ptr_img = (struct rt1320_imageinfo *)&fw->data[sizeof(struct rt1320_dspfwheader) + (sizeof(struct rt1320_imageinfo) * i)];
  1535	
  1536				dev_dbg(dev, "%s, fw_offset=0x%x, load fw addr=0x%x, size=%d\n", __func__,
  1537					fw_offset, ptr_img->addr, ptr_img->size);
  1538	
  1539				fw_data = (unsigned char *)&fw->data[fw_offset];
  1540	
  1541				/* The binary file has a header of 64 bytes */
  1542				if (memcmp(fw_data, hdr_sig, sizeof(hdr_sig)) == 0)
  1543					hdr_size = 64;
  1544				else
  1545					hdr_size = 0;
  1546	
  1547				sec[i].addr = ptr_img->addr;
  1548				sec[i].len = ptr_img->size - hdr_size;
  1549				sec[i].buf = fw_data + hdr_size;
  1550	
  1551				dev_dbg(dev, "%s, hdr_size=%d, sec[%d].buf[0]=0x%x\n",
  1552					__func__, hdr_size, i, sec[i].buf[0]);
  1553	
  1554				switch (rt1320->dev_id) {
  1555				case RT1320_DEV_ID:
  1556					if (ptr_img->addr == 0x3fc29d80)
  1557						if (fw_data[9] == '0')
  1558							dev_fw_match = true;
  1559					break;
  1560				case RT1321_DEV_ID:
  1561					if (ptr_img->addr == 0x3fc00000)
  1562						if (fw_data[9] == '1')
  1563							dev_fw_match = true;
  1564					break;
  1565				default:
  1566					dev_err(dev, "%s: Unknown device ID %d\n", __func__, rt1320->dev_id);
  1567					goto _exit_;
  1568				}
  1569	
  1570				fw_offset += ptr_img->size;
  1571			}
  1572	
  1573			if (dev_fw_match) {
  1574				dev_dbg(dev, "%s, starting BRA downloading FW..\n", __func__);
  1575				rt1320->bra_msg.dev_num = rt1320->sdw_slave->dev_num;
  1576				rt1320->bra_msg.flags = SDW_MSG_FLAG_WRITE;
  1577				rt1320->bra_msg.sections = fwheader->num;
  1578				rt1320->bra_msg.sec = &sec[0];
  1579				rt1320_data_rw(rt1320, 0, NULL, 0, RT1320_BRA_WRITE);
  1580				dev_dbg(dev, "%s, BRA downloading FW done..\n", __func__);
  1581			}
  1582	
  1583			regcache_cache_bypass(rt1320->regmap, false);
  1584			release_firmware(fw);
  1585	
  1586			if (!dev_fw_match) {
  1587				dev_err(dev, "%s: FW file doesn't match to device\n", __func__);
  1588				goto _exit_;
  1589			}
  1590		} else {
  1591			dev_err(dev, "%s: Failed to load %s firmware\n", __func__, filename);
  1592			goto _exit_;
  1593		}
  1594	
  1595		/* run RAM code */
  1596		regmap_read(rt1320->regmap, 0x3fc2bfc0, &val);
  1597		val |= 0x8;
  1598		regmap_write(rt1320->regmap, 0x3fc2bfc0, val);
  1599	
  1600		/* clear frame counter */
  1601		switch (rt1320->dev_id) {
  1602		case RT1320_DEV_ID:
  1603			regmap_write(rt1320->regmap, 0x3fc2bfcb, 0x00);
  1604			regmap_write(rt1320->regmap, 0x3fc2bfca, 0x00);
  1605			regmap_write(rt1320->regmap, 0x3fc2bfc9, 0x00);
  1606			regmap_write(rt1320->regmap, 0x3fc2bfc8, 0x00);
  1607			break;
  1608		case RT1321_DEV_ID:
  1609			regmap_write(rt1320->regmap, 0x3fc2dfcb, 0x00);
  1610			regmap_write(rt1320->regmap, 0x3fc2dfca, 0x00);
  1611			regmap_write(rt1320->regmap, 0x3fc2dfc9, 0x00);
  1612			regmap_write(rt1320->regmap, 0x3fc2dfc8, 0x00);
  1613			break;
  1614		}
  1615	
  1616		/* enable DSP FW */
  1617		regmap_write(rt1320->regmap, 0xc081, 0xfc);
  1618		regmap_update_bits(rt1320->regmap, 0xf01e, 0x1, 0x0);
  1619	
  1620		/* RsRatio should restore into DSP FW when FW was ready */
  1621		rt1320_invrs_load(rt1320);
  1622	
  1623		/* DSP clock switches to PLL */
  1624		regmap_write(rt1320->regmap, 0xc081, 0xfc);
  1625		/* pass DSP settings */
  1626		regmap_write(rt1320->regmap, 0xc5c3, 0xf3);
  1627		regmap_write(rt1320->regmap, 0xc5c8, 0x05);
  1628	
  1629		rt1320->fw_load_done = true;
  1630	
  1631		pm_runtime_set_autosuspend_delay(dev, 3000);
  1632		pm_runtime_mark_last_busy(dev);
  1633	
  1634	_exit_:
  1635		regmap_write(rt1320->regmap,
  1636				SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23,
  1637					RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x03);
  1638		rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, 0x03);
  1639	
  1640		snd_soc_dapm_mutex_unlock(dapm);
  1641	}
  1642	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-16  8:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-16  8:53 sound/soc/codecs/rt1320-sdw.c:1439 rt1320_dspfw_load_code() warn: inconsistent indenting kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.