From: kernel test robot <lkp@intel.com>
To: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>,
andi.shyti@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, gregkh@linuxfoundation.org,
jirislaby@kernel.org, andersson@kernel.org,
konradybcio@kernel.org, broonie@kernel.org,
johan+linaro@kernel.org, dianders@chromium.org,
agross@kernel.org, linux-arm-msm@vger.kernel.org,
linux-i2c@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
linux-spi@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, mukesh.savaliya@oss.qualcomm.com,
Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Subject: Re: [PATCH v6 3/6] soc: qcom: geni-se: Add support to load QUP SE Firmware via Linux subsystem
Date: Sat, 23 Aug 2025 11:11:46 +0800 [thread overview]
Message-ID: <202508231007.Lp8v1Xdl-lkp@intel.com> (raw)
In-Reply-To: <20250822072651.510027-4-viken.dadhaniya@oss.qualcomm.com>
Hi Viken,
kernel test robot noticed the following build warnings:
[auto build test WARNING on andi-shyti/i2c/i2c-host]
[also build test WARNING on tty/tty-testing tty/tty-next tty/tty-linus broonie-spi/for-next linus/master v6.17-rc2 next-20250822]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Viken-Dadhaniya/dt-bindings-qcom-se-common-Add-QUP-Peripheral-specific-properties-for-I2C-SPI-and-SERIAL-bus/20250822-153051
base: https://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git i2c/i2c-host
patch link: https://lore.kernel.org/r/20250822072651.510027-4-viken.dadhaniya%40oss.qualcomm.com
patch subject: [PATCH v6 3/6] soc: qcom: geni-se: Add support to load QUP SE Firmware via Linux subsystem
config: sparc64-randconfig-r133-20250823 (https://download.01.org/0day-ci/archive/20250823/202508231007.Lp8v1Xdl-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
reproduce: (https://download.01.org/0day-ci/archive/20250823/202508231007.Lp8v1Xdl-lkp@intel.com/reproduce)
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
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508231007.Lp8v1Xdl-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast to restricted __le32
drivers/soc/qcom/qcom-geni-se.c:1053:21: sparse: sparse: cast from restricted __le16
drivers/soc/qcom/qcom-geni-se.c:1056:25: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1057:47: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1059:25: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1065:43: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1065:25: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1066:48: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1066:25: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1067:48: sparse: sparse: restricted __le16 degrades to integer
drivers/soc/qcom/qcom-geni-se.c:1067:25: sparse: sparse: restricted __le16 degrades to integer
>> drivers/soc/qcom/qcom-geni-se.c:1238:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] l @@ got restricted __le16 [usertype] cfg_version @@
drivers/soc/qcom/qcom-geni-se.c:1238:19: sparse: expected unsigned int [usertype] l
drivers/soc/qcom/qcom-geni-se.c:1238:19: sparse: got restricted __le16 [usertype] cfg_version
drivers/soc/qcom/qcom-geni-se.c:1239:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] l @@ got restricted __le16 [usertype] cfg_version @@
drivers/soc/qcom/qcom-geni-se.c:1239:19: sparse: expected unsigned int [usertype] l
drivers/soc/qcom/qcom-geni-se.c:1239:19: sparse: got restricted __le16 [usertype] cfg_version
vim +1238 drivers/soc/qcom/qcom-geni-se.c
1165
1166 /**
1167 * geni_load_se_fw() - Load Serial Engine specific firmware.
1168 * @se: Pointer to the concerned serial engine.
1169 * @fw: Pointer to the firmware structure.
1170 * @mode: SE data transfer mode.
1171 * @protocol: Protocol type to be used with the SE (e.g., UART, SPI, I2C).
1172 *
1173 * Load the protocol firmware into the IRAM of the Serial Engine.
1174 *
1175 * Return: 0 if successful, otherwise return an error value.
1176 */
1177 static int geni_load_se_fw(struct geni_se *se, const struct firmware *fw,
1178 enum geni_se_xfer_mode mode, enum geni_se_protocol_type protocol)
1179 {
1180 const u32 *fw_data, *cfg_val_arr;
1181 const u8 *cfg_idx_arr;
1182 u32 i, reg_value;
1183 int ret;
1184 struct se_fw_hdr *hdr;
1185
1186 hdr = geni_find_protocol_fw(se->dev, fw, protocol);
1187 if (!hdr)
1188 return -EINVAL;
1189
1190 fw_data = (const u32 *)((u8 *)hdr + le16_to_cpu(hdr->fw_offset));
1191 cfg_idx_arr = (const u8 *)hdr + le16_to_cpu(hdr->cfg_idx_offset);
1192 cfg_val_arr = (const u32 *)((u8 *)hdr + le16_to_cpu(hdr->cfg_val_offset));
1193
1194 ret = geni_icc_set_bw(se);
1195 if (ret)
1196 return ret;
1197
1198 ret = geni_icc_enable(se);
1199 if (ret)
1200 return ret;
1201
1202 ret = geni_se_resources_on(se);
1203 if (ret)
1204 goto out_icc_disable;
1205
1206 /*
1207 * Disable high-priority interrupts until all currently executing
1208 * low-priority interrupts have been fully handled.
1209 */
1210 geni_setbits32(se->wrapper->base + QUPV3_COMMON_CFG, FAST_SWITCH_TO_HIGH_DISABLE);
1211
1212 /* Set AHB_M_CLK_CGC_ON to indicate hardware controls se-wrapper cgc clock. */
1213 geni_setbits32(se->wrapper->base + QUPV3_SE_AHB_M_CFG, AHB_M_CLK_CGC_ON);
1214
1215 /* Let hardware to control common cgc. */
1216 geni_setbits32(se->wrapper->base + QUPV3_COMMON_CGC_CTRL, COMMON_CSR_SLV_CLK_CGC_ON);
1217
1218 /*
1219 * Setting individual bits in GENI_OUTPUT_CTRL activates corresponding output lines,
1220 * allowing the hardware to drive data as configured.
1221 */
1222 writel(0x0, se->base + GENI_OUTPUT_CTRL);
1223
1224 /* Set SCLK and HCLK to program RAM */
1225 geni_setbits32(se->base + SE_GENI_CGC_CTRL, PROG_RAM_SCLK_OFF | PROG_RAM_HCLK_OFF);
1226 writel(0x0, se->base + SE_GENI_CLK_CTRL);
1227 geni_clrbits32(se->base + SE_GENI_CGC_CTRL, PROG_RAM_SCLK_OFF | PROG_RAM_HCLK_OFF);
1228
1229 /* Enable required clocks for DMA CSR, TX and RX. */
1230 reg_value = AHB_SEC_SLV_CLK_CGC_ON | DMA_AHB_SLV_CLK_CGC_ON |
1231 DMA_TX_CLK_CGC_ON | DMA_RX_CLK_CGC_ON;
1232 geni_setbits32(se->base + SE_DMA_GENERAL_CFG, reg_value);
1233
1234 /* Let hardware control CGC by default. */
1235 writel(DEFAULT_CGC_EN, se->base + SE_GENI_CGC_CTRL);
1236
1237 /* Set version of the configuration register part of firmware. */
> 1238 writel(hdr->cfg_version, se->base + SE_GENI_INIT_CFG_REVISION);
1239 writel(hdr->cfg_version, se->base + SE_GENI_S_INIT_CFG_REVISION);
1240
1241 /* Configure GENI primitive table. */
1242 for (i = 0; i < le16_to_cpu(hdr->cfg_size_in_items); i++)
1243 writel(cfg_val_arr[i],
1244 se->base + SE_GENI_CFG_REG0 + (cfg_idx_arr[i] * sizeof(u32)));
1245
1246 /* Configure condition for assertion of RX_RFR_WATERMARK condition. */
1247 reg_value = geni_se_get_rx_fifo_depth(se);
1248 writel(reg_value - 2, se->base + SE_GENI_RX_RFR_WATERMARK_REG);
1249
1250 /* Let hardware control CGC */
1251 geni_setbits32(se->base + GENI_OUTPUT_CTRL, DEFAULT_IO_OUTPUT_CTRL_MSK);
1252
1253 ret = geni_configure_xfer_mode(se, mode);
1254 if (ret)
1255 goto out_resources_off;
1256
1257 geni_enable_interrupts(se);
1258
1259 geni_write_fw_revision(se, le16_to_cpu(hdr->serial_protocol), le16_to_cpu(hdr->fw_version));
1260
1261 /* Program RAM address space. */
1262 memcpy_toio(se->base + SE_GENI_CFG_RAMN, fw_data,
1263 le16_to_cpu(hdr->fw_size_in_items) * sizeof(u32));
1264
1265 /* Put default values on GENI's output pads. */
1266 writel_relaxed(0x1, se->base + GENI_FORCE_DEFAULT_REG);
1267
1268 /* Toggle SCLK/HCLK from high to low to finalize RAM programming and apply config. */
1269 geni_setbits32(se->base + SE_GENI_CGC_CTRL, PROG_RAM_SCLK_OFF | PROG_RAM_HCLK_OFF);
1270 geni_setbits32(se->base + SE_GENI_CLK_CTRL, SER_CLK_SEL);
1271 geni_clrbits32(se->base + SE_GENI_CGC_CTRL, PROG_RAM_SCLK_OFF | PROG_RAM_HCLK_OFF);
1272
1273 /* Serial engine DMA interface is enabled. */
1274 geni_setbits32(se->base + SE_DMA_IF_EN, DMA_IF_EN);
1275
1276 /* Enable or disable FIFO interface of the serial engine. */
1277 if (mode == GENI_SE_FIFO)
1278 geni_clrbits32(se->base + SE_FIFO_IF_DISABLE, FIFO_IF_DISABLE);
1279 else
1280 geni_setbits32(se->base + SE_FIFO_IF_DISABLE, FIFO_IF_DISABLE);
1281
1282 out_resources_off:
1283 geni_se_resources_off(se);
1284
1285 out_icc_disable:
1286 geni_icc_disable(se);
1287 return ret;
1288 }
1289
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-08-23 3:12 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 7:26 [PATCH v6 0/6] Add support to load QUP SE firmware from Viken Dadhaniya
2025-08-22 7:26 ` [PATCH v6 1/6] dt-bindings: qcom: se-common: Add QUP Peripheral-specific properties for I2C, SPI, and SERIAL bus Viken Dadhaniya
2025-08-22 7:26 ` [PATCH v6 2/6] soc: qcom: geni-se: Cleanup register defines and update copyright Viken Dadhaniya
2025-08-22 7:26 ` [PATCH v6 3/6] soc: qcom: geni-se: Add support to load QUP SE Firmware via Linux subsystem Viken Dadhaniya
2025-08-23 3:11 ` kernel test robot [this message]
2025-08-22 7:26 ` [PATCH v6 4/6] i2c: qcom-geni: Load i2c qup Firmware from linux side Viken Dadhaniya
2025-08-22 7:26 ` [PATCH v6 5/6] spi: geni-qcom: Load spi " Viken Dadhaniya
2025-08-22 7:26 ` [PATCH v6 6/6] serial: qcom-geni: Load UART " Viken Dadhaniya
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202508231007.Lp8v1Xdl-lkp@intel.com \
--to=lkp@intel.com \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=andi.shyti@kernel.org \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=johan+linaro@kernel.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=mukesh.savaliya@oss.qualcomm.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=robh@kernel.org \
--cc=viken.dadhaniya@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).