diff for duplicates of <202605101332.SfUuii8x-lkp@intel.com> diff --git a/a/1.txt b/N1/1.txt index 8899727..f9731be 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,13 +1,6 @@ -BCC: lkp@intel.com -CC: oe-kbuild-all@lists.linux.dev -TO: Hector Martin <marcan@marcan.st> -CC: Janne Grunau <j@jannau.net> - tree: https://github.com/AsahiLinux/linux bits/090-spi-hid head: 7b3c6e8461f3035d025ece758919facbc1c6d854 commit: 9ac13ff0fc75010681a6ea5fd694db592dea9069 [17/19] soc: apple: Add DockChannel driver -:::::: branch date: 20 hours ago -:::::: commit date: 20 hours ago config: um-randconfig-r072-20260509 (https://download.01.org/0day-ci/archive/20260510/202605101332.SfUuii8x-lkp@intel.com/config) compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3) smatch: v0.5.0-9065-ge9cc34fd @@ -27,7 +20,6 @@ drivers/soc/apple/dockchannel.c:247 dockchannel_init() warn: passing zero to 'de vim +/dev_err_probe +241 drivers/soc/apple/dockchannel.c -9ac13ff0fc7501 Hector Martin 2022-07-08 212 9ac13ff0fc7501 Hector Martin 2022-07-08 213 struct dockchannel *dockchannel_init(struct platform_device *pdev) 9ac13ff0fc7501 Hector Martin 2022-07-08 214 { 9ac13ff0fc7501 Hector Martin 2022-07-08 215 struct device *dev = &pdev->dev; @@ -56,133 +48,18 @@ vim +/dev_err_probe +241 drivers/soc/apple/dockchannel.c 9ac13ff0fc7501 Hector Martin 2022-07-08 238 9ac13ff0fc7501 Hector Martin 2022-07-08 239 dockchannel->tx_irq = platform_get_irq_byname(pdev, "tx"); 9ac13ff0fc7501 Hector Martin 2022-07-08 240 if (dockchannel->tx_irq <= 0) { + ^^^^^^^^^^^^^^^^^^^^^^^^ +This should be < 0 since platform_get_irq_byname() can't return zero. + 9ac13ff0fc7501 Hector Martin 2022-07-08 @241 return ERR_PTR(dev_err_probe(dev, dockchannel->tx_irq, 9ac13ff0fc7501 Hector Martin 2022-07-08 242 "Failed to get TX IRQ")); + +Otherwise we'd have to set a correct error code. + 9ac13ff0fc7501 Hector Martin 2022-07-08 243 } 9ac13ff0fc7501 Hector Martin 2022-07-08 244 9ac13ff0fc7501 Hector Martin 2022-07-08 245 dockchannel->rx_irq = platform_get_irq_byname(pdev, "rx"); 9ac13ff0fc7501 Hector Martin 2022-07-08 246 if (dockchannel->rx_irq <= 0) { -9ac13ff0fc7501 Hector Martin 2022-07-08 247 return ERR_PTR(dev_err_probe(dev, dockchannel->rx_irq, -9ac13ff0fc7501 Hector Martin 2022-07-08 248 "Failed to get RX IRQ")); -9ac13ff0fc7501 Hector Martin 2022-07-08 249 } -9ac13ff0fc7501 Hector Martin 2022-07-08 250 -9ac13ff0fc7501 Hector Martin 2022-07-08 251 ret = devm_request_irq(dev, dockchannel->tx_irq, dockchannel_tx_irq, IRQF_NO_AUTOEN, -9ac13ff0fc7501 Hector Martin 2022-07-08 252 "apple-dockchannel-tx", dockchannel); -9ac13ff0fc7501 Hector Martin 2022-07-08 253 if (ret) -9ac13ff0fc7501 Hector Martin 2022-07-08 254 return ERR_PTR(dev_err_probe(dev, ret, "Failed to request TX IRQ")); -9ac13ff0fc7501 Hector Martin 2022-07-08 255 -9ac13ff0fc7501 Hector Martin 2022-07-08 256 ret = devm_request_threaded_irq(dev, dockchannel->rx_irq, dockchannel_rx_irq, -9ac13ff0fc7501 Hector Martin 2022-07-08 257 dockchannel_rx_irq_thread, IRQF_NO_AUTOEN, -9ac13ff0fc7501 Hector Martin 2022-07-08 258 "apple-dockchannel-rx", dockchannel); -9ac13ff0fc7501 Hector Martin 2022-07-08 259 if (ret) -9ac13ff0fc7501 Hector Martin 2022-07-08 260 return ERR_PTR(dev_err_probe(dev, ret, "Failed to request RX IRQ")); -9ac13ff0fc7501 Hector Martin 2022-07-08 261 -9ac13ff0fc7501 Hector Martin 2022-07-08 262 return dockchannel; -9ac13ff0fc7501 Hector Martin 2022-07-08 263 } -9ac13ff0fc7501 Hector Martin 2022-07-08 264 EXPORT_SYMBOL(dockchannel_init); -9ac13ff0fc7501 Hector Martin 2022-07-08 265 -9ac13ff0fc7501 Hector Martin 2022-07-08 266 -9ac13ff0fc7501 Hector Martin 2022-07-08 267 /* Dockchannel IRQchip */ -9ac13ff0fc7501 Hector Martin 2022-07-08 268 -9ac13ff0fc7501 Hector Martin 2022-07-08 269 static void dockchannel_irq(struct irq_desc *desc) -9ac13ff0fc7501 Hector Martin 2022-07-08 270 { -9ac13ff0fc7501 Hector Martin 2022-07-08 271 unsigned int irq = irq_desc_get_irq(desc); -9ac13ff0fc7501 Hector Martin 2022-07-08 272 struct irq_chip *chip = irq_desc_get_chip(desc); -9ac13ff0fc7501 Hector Martin 2022-07-08 273 struct dockchannel_common *dcc = irq_get_handler_data(irq); -9ac13ff0fc7501 Hector Martin 2022-07-08 274 unsigned long flags = readl_relaxed(dcc->irq_base + IRQ_FLAG); -9ac13ff0fc7501 Hector Martin 2022-07-08 275 int bit; -9ac13ff0fc7501 Hector Martin 2022-07-08 276 -9ac13ff0fc7501 Hector Martin 2022-07-08 277 chained_irq_enter(chip, desc); -9ac13ff0fc7501 Hector Martin 2022-07-08 278 -9ac13ff0fc7501 Hector Martin 2022-07-08 279 for_each_set_bit(bit, &flags, DOCKCHANNEL_MAX_IRQ) -9ac13ff0fc7501 Hector Martin 2022-07-08 280 generic_handle_domain_irq(dcc->domain, bit); -9ac13ff0fc7501 Hector Martin 2022-07-08 281 -9ac13ff0fc7501 Hector Martin 2022-07-08 282 chained_irq_exit(chip, desc); -9ac13ff0fc7501 Hector Martin 2022-07-08 283 } -9ac13ff0fc7501 Hector Martin 2022-07-08 284 -9ac13ff0fc7501 Hector Martin 2022-07-08 285 static void dockchannel_irq_ack(struct irq_data *data) -9ac13ff0fc7501 Hector Martin 2022-07-08 286 { -9ac13ff0fc7501 Hector Martin 2022-07-08 287 struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data); -9ac13ff0fc7501 Hector Martin 2022-07-08 288 unsigned int hwirq = data->hwirq; -9ac13ff0fc7501 Hector Martin 2022-07-08 289 -9ac13ff0fc7501 Hector Martin 2022-07-08 290 writel_relaxed(BIT(hwirq), dcc->irq_base + IRQ_FLAG); -9ac13ff0fc7501 Hector Martin 2022-07-08 291 } -9ac13ff0fc7501 Hector Martin 2022-07-08 292 -9ac13ff0fc7501 Hector Martin 2022-07-08 293 static void dockchannel_irq_mask(struct irq_data *data) -9ac13ff0fc7501 Hector Martin 2022-07-08 294 { -9ac13ff0fc7501 Hector Martin 2022-07-08 295 struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data); -9ac13ff0fc7501 Hector Martin 2022-07-08 296 unsigned int hwirq = data->hwirq; -9ac13ff0fc7501 Hector Martin 2022-07-08 297 u32 val = readl_relaxed(dcc->irq_base + IRQ_MASK); -9ac13ff0fc7501 Hector Martin 2022-07-08 298 -9ac13ff0fc7501 Hector Martin 2022-07-08 299 writel_relaxed(val & ~BIT(hwirq), dcc->irq_base + IRQ_MASK); -9ac13ff0fc7501 Hector Martin 2022-07-08 300 } -9ac13ff0fc7501 Hector Martin 2022-07-08 301 -9ac13ff0fc7501 Hector Martin 2022-07-08 302 static void dockchannel_irq_unmask(struct irq_data *data) -9ac13ff0fc7501 Hector Martin 2022-07-08 303 { -9ac13ff0fc7501 Hector Martin 2022-07-08 304 struct dockchannel_common *dcc = irq_data_get_irq_chip_data(data); -9ac13ff0fc7501 Hector Martin 2022-07-08 305 unsigned int hwirq = data->hwirq; -9ac13ff0fc7501 Hector Martin 2022-07-08 306 u32 val = readl_relaxed(dcc->irq_base + IRQ_MASK); -9ac13ff0fc7501 Hector Martin 2022-07-08 307 -9ac13ff0fc7501 Hector Martin 2022-07-08 308 writel_relaxed(val | BIT(hwirq), dcc->irq_base + IRQ_MASK); -9ac13ff0fc7501 Hector Martin 2022-07-08 309 } -9ac13ff0fc7501 Hector Martin 2022-07-08 310 -9ac13ff0fc7501 Hector Martin 2022-07-08 311 static const struct irq_chip dockchannel_irqchip = { -9ac13ff0fc7501 Hector Martin 2022-07-08 312 .name = "dockchannel-irqc", -9ac13ff0fc7501 Hector Martin 2022-07-08 313 .irq_ack = dockchannel_irq_ack, -9ac13ff0fc7501 Hector Martin 2022-07-08 314 .irq_mask = dockchannel_irq_mask, -9ac13ff0fc7501 Hector Martin 2022-07-08 315 .irq_unmask = dockchannel_irq_unmask, -9ac13ff0fc7501 Hector Martin 2022-07-08 316 }; -9ac13ff0fc7501 Hector Martin 2022-07-08 317 -9ac13ff0fc7501 Hector Martin 2022-07-08 318 static int dockchannel_irq_domain_map(struct irq_domain *d, unsigned int virq, -9ac13ff0fc7501 Hector Martin 2022-07-08 319 irq_hw_number_t hw) -9ac13ff0fc7501 Hector Martin 2022-07-08 320 { -9ac13ff0fc7501 Hector Martin 2022-07-08 321 irq_set_chip_data(virq, d->host_data); -9ac13ff0fc7501 Hector Martin 2022-07-08 322 irq_set_chip_and_handler(virq, &dockchannel_irqchip, handle_level_irq); -9ac13ff0fc7501 Hector Martin 2022-07-08 323 -9ac13ff0fc7501 Hector Martin 2022-07-08 324 return 0; -9ac13ff0fc7501 Hector Martin 2022-07-08 325 } -9ac13ff0fc7501 Hector Martin 2022-07-08 326 -9ac13ff0fc7501 Hector Martin 2022-07-08 327 static const struct irq_domain_ops dockchannel_irq_domain_ops = { -9ac13ff0fc7501 Hector Martin 2022-07-08 328 .xlate = irq_domain_xlate_twocell, -9ac13ff0fc7501 Hector Martin 2022-07-08 329 .map = dockchannel_irq_domain_map, -9ac13ff0fc7501 Hector Martin 2022-07-08 330 }; -9ac13ff0fc7501 Hector Martin 2022-07-08 331 -9ac13ff0fc7501 Hector Martin 2022-07-08 332 static int dockchannel_probe(struct platform_device *pdev) -9ac13ff0fc7501 Hector Martin 2022-07-08 333 { -9ac13ff0fc7501 Hector Martin 2022-07-08 334 struct device *dev = &pdev->dev; -9ac13ff0fc7501 Hector Martin 2022-07-08 335 struct dockchannel_common *dcc; -9ac13ff0fc7501 Hector Martin 2022-07-08 336 -9ac13ff0fc7501 Hector Martin 2022-07-08 337 dcc = devm_kzalloc(dev, sizeof(*dcc), GFP_KERNEL); -9ac13ff0fc7501 Hector Martin 2022-07-08 338 if (!dcc) -9ac13ff0fc7501 Hector Martin 2022-07-08 339 return -ENOMEM; -9ac13ff0fc7501 Hector Martin 2022-07-08 340 -9ac13ff0fc7501 Hector Martin 2022-07-08 341 dcc->dev = dev; -9ac13ff0fc7501 Hector Martin 2022-07-08 342 platform_set_drvdata(pdev, dcc); -9ac13ff0fc7501 Hector Martin 2022-07-08 343 -9ac13ff0fc7501 Hector Martin 2022-07-08 344 dcc->irq_base = devm_platform_ioremap_resource_byname(pdev, "irq"); -9ac13ff0fc7501 Hector Martin 2022-07-08 345 if (IS_ERR(dcc->irq_base)) -9ac13ff0fc7501 Hector Martin 2022-07-08 346 return PTR_ERR(dcc->irq_base); -9ac13ff0fc7501 Hector Martin 2022-07-08 347 -9ac13ff0fc7501 Hector Martin 2022-07-08 348 writel_relaxed(0, dcc->irq_base + IRQ_MASK); -9ac13ff0fc7501 Hector Martin 2022-07-08 349 writel_relaxed(~0, dcc->irq_base + IRQ_FLAG); -9ac13ff0fc7501 Hector Martin 2022-07-08 350 -9ac13ff0fc7501 Hector Martin 2022-07-08 351 dcc->domain = irq_domain_add_linear(dev->of_node, DOCKCHANNEL_MAX_IRQ, -9ac13ff0fc7501 Hector Martin 2022-07-08 352 &dockchannel_irq_domain_ops, dcc); -9ac13ff0fc7501 Hector Martin 2022-07-08 353 if (!dcc->domain) -9ac13ff0fc7501 Hector Martin 2022-07-08 354 return -ENOMEM; -9ac13ff0fc7501 Hector Martin 2022-07-08 355 -9ac13ff0fc7501 Hector Martin 2022-07-08 356 dcc->irq = platform_get_irq(pdev, 0); -9ac13ff0fc7501 Hector Martin 2022-07-08 357 if (dcc->irq <= 0) -9ac13ff0fc7501 Hector Martin 2022-07-08 @358 return dev_err_probe(dev, dcc->irq, "Failed to get IRQ"); -9ac13ff0fc7501 Hector Martin 2022-07-08 359 -9ac13ff0fc7501 Hector Martin 2022-07-08 360 irq_set_handler_data(dcc->irq, dcc); -9ac13ff0fc7501 Hector Martin 2022-07-08 361 irq_set_chained_handler(dcc->irq, dockchannel_irq); -9ac13ff0fc7501 Hector Martin 2022-07-08 362 -9ac13ff0fc7501 Hector Martin 2022-07-08 363 devm_of_platform_populate(dev); -9ac13ff0fc7501 Hector Martin 2022-07-08 364 -9ac13ff0fc7501 Hector Martin 2022-07-08 365 return 0; -9ac13ff0fc7501 Hector Martin 2022-07-08 366 } -9ac13ff0fc7501 Hector Martin 2022-07-08 367 -- 0-DAY CI Kernel Test Service diff --git a/a/content_digest b/N1/content_digest index 1eb3b14..0a8ed78 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,21 +1,16 @@ - "From\0kernel test robot <lkp@intel.com>\0" + "From\0Dan Carpenter <error27@gmail.com>\0" "Subject\0[asahilinux:bits/090-spi-hid 17/19] drivers/soc/apple/dockchannel.c:241 dockchannel_init() warn: passing zero to 'dev_err_probe'\0" - "Date\0Sun, 10 May 2026 13:52:13 +0800\0" - "To\0oe-kbuild@lists.linux.dev\0" + "Date\0Sun, 10 May 2026 12:45:58 +0300\0" + "To\0oe-kbuild@lists.linux.dev" + " Hector Martin <marcan@marcan.st>\0" "Cc\0lkp@intel.com" - " Dan Carpenter <error27@gmail.com>\0" + oe-kbuild-all@lists.linux.dev + " Janne Grunau <j@jannau.net>\0" "\00:1\0" "b\0" - "BCC: lkp@intel.com\n" - "CC: oe-kbuild-all@lists.linux.dev\n" - "TO: Hector Martin <marcan@marcan.st>\n" - "CC: Janne Grunau <j@jannau.net>\n" - "\n" "tree: https://github.com/AsahiLinux/linux bits/090-spi-hid\n" "head: 7b3c6e8461f3035d025ece758919facbc1c6d854\n" "commit: 9ac13ff0fc75010681a6ea5fd694db592dea9069 [17/19] soc: apple: Add DockChannel driver\n" - ":::::: branch date: 20 hours ago\n" - ":::::: commit date: 20 hours ago\n" "config: um-randconfig-r072-20260509 (https://download.01.org/0day-ci/archive/20260510/202605101332.SfUuii8x-lkp@intel.com/config)\n" "compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3)\n" "smatch: v0.5.0-9065-ge9cc34fd\n" @@ -35,7 +30,6 @@ "\n" "vim +/dev_err_probe +241 drivers/soc/apple/dockchannel.c\n" "\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 212 \n" "9ac13ff0fc7501 Hector Martin 2022-07-08 213 struct dockchannel *dockchannel_init(struct platform_device *pdev)\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 214 {\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 215 \tstruct device *dev = &pdev->dev;\n" @@ -64,136 +58,21 @@ "9ac13ff0fc7501 Hector Martin 2022-07-08 238 \n" "9ac13ff0fc7501 Hector Martin 2022-07-08 239 \tdockchannel->tx_irq = platform_get_irq_byname(pdev, \"tx\");\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 240 \tif (dockchannel->tx_irq <= 0) {\n" + " ^^^^^^^^^^^^^^^^^^^^^^^^\n" + "This should be < 0 since platform_get_irq_byname() can't return zero.\n" + "\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 @241 \t\treturn ERR_PTR(dev_err_probe(dev, dockchannel->tx_irq,\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 242 \t\t\t\t \"Failed to get TX IRQ\"));\n" + "\n" + "Otherwise we'd have to set a correct error code.\n" + "\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 243 \t}\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 244 \n" "9ac13ff0fc7501 Hector Martin 2022-07-08 245 \tdockchannel->rx_irq = platform_get_irq_byname(pdev, \"rx\");\n" "9ac13ff0fc7501 Hector Martin 2022-07-08 246 \tif (dockchannel->rx_irq <= 0) {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 247 \t\treturn ERR_PTR(dev_err_probe(dev, dockchannel->rx_irq,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 248 \t\t\t\t \"Failed to get RX IRQ\"));\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 249 \t}\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 250 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 251 \tret = devm_request_irq(dev, dockchannel->tx_irq, dockchannel_tx_irq, IRQF_NO_AUTOEN,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 252 \t\t\t \"apple-dockchannel-tx\", dockchannel);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 253 \tif (ret)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 254 \t\treturn ERR_PTR(dev_err_probe(dev, ret, \"Failed to request TX IRQ\"));\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 255 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 256 \tret = devm_request_threaded_irq(dev, dockchannel->rx_irq, dockchannel_rx_irq,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 257 \t\t\t\t\tdockchannel_rx_irq_thread, IRQF_NO_AUTOEN,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 258 \t\t\t\t\t\"apple-dockchannel-rx\", dockchannel);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 259 \tif (ret)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 260 \t\treturn ERR_PTR(dev_err_probe(dev, ret, \"Failed to request RX IRQ\"));\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 261 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 262 \treturn dockchannel;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 263 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 264 EXPORT_SYMBOL(dockchannel_init);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 265 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 266 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 267 /* Dockchannel IRQchip */\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 268 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 269 static void dockchannel_irq(struct irq_desc *desc)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 270 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 271 \tunsigned int irq = irq_desc_get_irq(desc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 272 \tstruct irq_chip *chip = irq_desc_get_chip(desc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 273 \tstruct dockchannel_common *dcc = irq_get_handler_data(irq);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 274 \tunsigned long flags = readl_relaxed(dcc->irq_base + IRQ_FLAG);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 275 \tint bit;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 276 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 277 \tchained_irq_enter(chip, desc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 278 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 279 \tfor_each_set_bit(bit, &flags, DOCKCHANNEL_MAX_IRQ)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 280 \t\tgeneric_handle_domain_irq(dcc->domain, bit);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 281 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 282 \tchained_irq_exit(chip, desc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 283 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 284 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 285 static void dockchannel_irq_ack(struct irq_data *data)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 286 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 287 \tstruct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 288 \tunsigned int hwirq = data->hwirq;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 289 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 290 \twritel_relaxed(BIT(hwirq), dcc->irq_base + IRQ_FLAG);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 291 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 292 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 293 static void dockchannel_irq_mask(struct irq_data *data)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 294 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 295 \tstruct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 296 \tunsigned int hwirq = data->hwirq;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 297 \tu32 val = readl_relaxed(dcc->irq_base + IRQ_MASK);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 298 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 299 \twritel_relaxed(val & ~BIT(hwirq), dcc->irq_base + IRQ_MASK);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 300 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 301 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 302 static void dockchannel_irq_unmask(struct irq_data *data)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 303 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 304 \tstruct dockchannel_common *dcc = irq_data_get_irq_chip_data(data);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 305 \tunsigned int hwirq = data->hwirq;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 306 \tu32 val = readl_relaxed(dcc->irq_base + IRQ_MASK);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 307 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 308 \twritel_relaxed(val | BIT(hwirq), dcc->irq_base + IRQ_MASK);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 309 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 310 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 311 static const struct irq_chip dockchannel_irqchip = {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 312 \t.name = \"dockchannel-irqc\",\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 313 \t.irq_ack = dockchannel_irq_ack,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 314 \t.irq_mask = dockchannel_irq_mask,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 315 \t.irq_unmask = dockchannel_irq_unmask,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 316 };\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 317 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 318 static int dockchannel_irq_domain_map(struct irq_domain *d, unsigned int virq,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 319 \t\t\t\t irq_hw_number_t hw)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 320 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 321 \tirq_set_chip_data(virq, d->host_data);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 322 \tirq_set_chip_and_handler(virq, &dockchannel_irqchip, handle_level_irq);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 323 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 324 \treturn 0;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 325 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 326 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 327 static const struct irq_domain_ops dockchannel_irq_domain_ops = {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 328 \t.xlate\t= irq_domain_xlate_twocell,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 329 \t.map\t= dockchannel_irq_domain_map,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 330 };\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 331 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 332 static int dockchannel_probe(struct platform_device *pdev)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 333 {\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 334 \tstruct device *dev = &pdev->dev;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 335 \tstruct dockchannel_common *dcc;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 336 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 337 \tdcc = devm_kzalloc(dev, sizeof(*dcc), GFP_KERNEL);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 338 \tif (!dcc)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 339 \t\treturn -ENOMEM;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 340 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 341 \tdcc->dev = dev;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 342 \tplatform_set_drvdata(pdev, dcc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 343 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 344 \tdcc->irq_base = devm_platform_ioremap_resource_byname(pdev, \"irq\");\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 345 \tif (IS_ERR(dcc->irq_base))\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 346 \t\treturn PTR_ERR(dcc->irq_base);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 347 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 348 \twritel_relaxed(0, dcc->irq_base + IRQ_MASK);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 349 \twritel_relaxed(~0, dcc->irq_base + IRQ_FLAG);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 350 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 351 \tdcc->domain = irq_domain_add_linear(dev->of_node, DOCKCHANNEL_MAX_IRQ,\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 352 \t\t\t\t\t &dockchannel_irq_domain_ops, dcc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 353 \tif (!dcc->domain)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 354 \t\treturn -ENOMEM;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 355 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 356 \tdcc->irq = platform_get_irq(pdev, 0);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 357 \tif (dcc->irq <= 0)\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 @358 \t\treturn dev_err_probe(dev, dcc->irq, \"Failed to get IRQ\");\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 359 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 360 \tirq_set_handler_data(dcc->irq, dcc);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 361 \tirq_set_chained_handler(dcc->irq, dockchannel_irq);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 362 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 363 \tdevm_of_platform_populate(dev);\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 364 \n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 365 \treturn 0;\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 366 }\n" - "9ac13ff0fc7501 Hector Martin 2022-07-08 367 \n" "\n" "-- \n" "0-DAY CI Kernel Test Service\n" https://github.com/intel/lkp-tests/wiki -9b8407adaeb81cbb66e8074f872f163b78ec82cf349061d4e4e36b7e997a0303 +ad6da9457ffaea6f152b1584f8f5122367f4b39c2de72acc7fdf1553e1e31ab7
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.