tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: baf5a9d1f9b95eb97e9eb54932e20dbbf814771c commit: f27dd0ad68850fdb806536a733a32d8f74810f1e [1790/12310] media: seco-cec: fix RC_CORE dependency config: x86_64-randconfig-s5-03051951 (attached as .config) compiler: gcc-8 (Debian 8.3.0-2) 8.3.0 reproduce: git checkout f27dd0ad68850fdb806536a733a32d8f74810f1e # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): ld: drivers/media/platform/seco-cec/seco-cec.o: in function `secocec_ir_probe': >> drivers/media/platform/seco-cec/seco-cec.c:355: undefined reference to `devm_rc_allocate_device' >> ld: drivers/media/platform/seco-cec/seco-cec.c:395: undefined reference to `devm_rc_register_device' ld: drivers/media/platform/seco-cec/seco-cec.o: in function `secocec_ir_rx': >> drivers/media/platform/seco-cec/seco-cec.c:432: undefined reference to `rc_keydown' vim +355 drivers/media/platform/seco-cec/seco-cec.c b03c2fb9 Ettore Chimenti 2018-10-21 345 daef9576 Ettore Chimenti 2018-10-21 346 #ifdef CONFIG_VIDEO_SECO_RC daef9576 Ettore Chimenti 2018-10-21 347 static int secocec_ir_probe(void *priv) daef9576 Ettore Chimenti 2018-10-21 348 { daef9576 Ettore Chimenti 2018-10-21 349 struct secocec_data *cec = priv; daef9576 Ettore Chimenti 2018-10-21 350 struct device *dev = cec->dev; daef9576 Ettore Chimenti 2018-10-21 351 int status; daef9576 Ettore Chimenti 2018-10-21 352 u16 val; daef9576 Ettore Chimenti 2018-10-21 353 daef9576 Ettore Chimenti 2018-10-21 354 /* Prepare the RC input device */ daef9576 Ettore Chimenti 2018-10-21 @355 cec->ir = devm_rc_allocate_device(dev, RC_DRIVER_SCANCODE); daef9576 Ettore Chimenti 2018-10-21 356 if (!cec->ir) daef9576 Ettore Chimenti 2018-10-21 357 return -ENOMEM; daef9576 Ettore Chimenti 2018-10-21 358 daef9576 Ettore Chimenti 2018-10-21 359 snprintf(cec->ir_input_phys, sizeof(cec->ir_input_phys), daef9576 Ettore Chimenti 2018-10-21 360 "%s/input0", dev_name(dev)); daef9576 Ettore Chimenti 2018-10-21 361 daef9576 Ettore Chimenti 2018-10-21 362 cec->ir->device_name = dev_name(dev); daef9576 Ettore Chimenti 2018-10-21 363 cec->ir->input_phys = cec->ir_input_phys; daef9576 Ettore Chimenti 2018-10-21 364 cec->ir->input_id.bustype = BUS_HOST; daef9576 Ettore Chimenti 2018-10-21 365 cec->ir->input_id.vendor = 0; daef9576 Ettore Chimenti 2018-10-21 366 cec->ir->input_id.product = 0; daef9576 Ettore Chimenti 2018-10-21 367 cec->ir->input_id.version = 1; daef9576 Ettore Chimenti 2018-10-21 368 cec->ir->driver_name = SECOCEC_DEV_NAME; daef9576 Ettore Chimenti 2018-10-21 369 cec->ir->allowed_protocols = RC_PROTO_BIT_RC5; daef9576 Ettore Chimenti 2018-10-21 370 cec->ir->priv = cec; daef9576 Ettore Chimenti 2018-10-21 371 cec->ir->map_name = RC_MAP_HAUPPAUGE; daef9576 Ettore Chimenti 2018-10-21 372 cec->ir->timeout = MS_TO_NS(100); daef9576 Ettore Chimenti 2018-10-21 373 daef9576 Ettore Chimenti 2018-10-21 374 /* Clear the status register */ daef9576 Ettore Chimenti 2018-10-21 375 status = smb_rd16(SECOCEC_STATUS_REG_1, &val); daef9576 Ettore Chimenti 2018-10-21 376 if (status != 0) daef9576 Ettore Chimenti 2018-10-21 377 goto err; daef9576 Ettore Chimenti 2018-10-21 378 daef9576 Ettore Chimenti 2018-10-21 379 status = smb_wr16(SECOCEC_STATUS_REG_1, val); daef9576 Ettore Chimenti 2018-10-21 380 if (status != 0) daef9576 Ettore Chimenti 2018-10-21 381 goto err; daef9576 Ettore Chimenti 2018-10-21 382 daef9576 Ettore Chimenti 2018-10-21 383 /* Enable the interrupts */ daef9576 Ettore Chimenti 2018-10-21 384 status = smb_rd16(SECOCEC_ENABLE_REG_1, &val); daef9576 Ettore Chimenti 2018-10-21 385 if (status != 0) daef9576 Ettore Chimenti 2018-10-21 386 goto err; daef9576 Ettore Chimenti 2018-10-21 387 daef9576 Ettore Chimenti 2018-10-21 388 status = smb_wr16(SECOCEC_ENABLE_REG_1, daef9576 Ettore Chimenti 2018-10-21 389 val | SECOCEC_ENABLE_REG_1_IR); daef9576 Ettore Chimenti 2018-10-21 390 if (status != 0) daef9576 Ettore Chimenti 2018-10-21 391 goto err; daef9576 Ettore Chimenti 2018-10-21 392 daef9576 Ettore Chimenti 2018-10-21 393 dev_dbg(dev, "IR enabled"); daef9576 Ettore Chimenti 2018-10-21 394 daef9576 Ettore Chimenti 2018-10-21 @395 status = devm_rc_register_device(dev, cec->ir); daef9576 Ettore Chimenti 2018-10-21 396 daef9576 Ettore Chimenti 2018-10-21 397 if (status) { daef9576 Ettore Chimenti 2018-10-21 398 dev_err(dev, "Failed to prepare input device"); daef9576 Ettore Chimenti 2018-10-21 399 cec->ir = NULL; daef9576 Ettore Chimenti 2018-10-21 400 goto err; daef9576 Ettore Chimenti 2018-10-21 401 } daef9576 Ettore Chimenti 2018-10-21 402 daef9576 Ettore Chimenti 2018-10-21 403 return 0; daef9576 Ettore Chimenti 2018-10-21 404 daef9576 Ettore Chimenti 2018-10-21 405 err: daef9576 Ettore Chimenti 2018-10-21 406 smb_rd16(SECOCEC_ENABLE_REG_1, &val); daef9576 Ettore Chimenti 2018-10-21 407 daef9576 Ettore Chimenti 2018-10-21 408 smb_wr16(SECOCEC_ENABLE_REG_1, daef9576 Ettore Chimenti 2018-10-21 409 val & ~SECOCEC_ENABLE_REG_1_IR); daef9576 Ettore Chimenti 2018-10-21 410 daef9576 Ettore Chimenti 2018-10-21 411 dev_dbg(dev, "IR disabled"); daef9576 Ettore Chimenti 2018-10-21 412 return status; daef9576 Ettore Chimenti 2018-10-21 413 } daef9576 Ettore Chimenti 2018-10-21 414 daef9576 Ettore Chimenti 2018-10-21 415 static int secocec_ir_rx(struct secocec_data *priv) daef9576 Ettore Chimenti 2018-10-21 416 { daef9576 Ettore Chimenti 2018-10-21 417 struct secocec_data *cec = priv; daef9576 Ettore Chimenti 2018-10-21 418 struct device *dev = cec->dev; daef9576 Ettore Chimenti 2018-10-21 419 u16 val, status, key, addr, toggle; daef9576 Ettore Chimenti 2018-10-21 420 daef9576 Ettore Chimenti 2018-10-21 421 if (!cec->ir) daef9576 Ettore Chimenti 2018-10-21 422 return -ENODEV; daef9576 Ettore Chimenti 2018-10-21 423 daef9576 Ettore Chimenti 2018-10-21 424 status = smb_rd16(SECOCEC_IR_READ_DATA, &val); daef9576 Ettore Chimenti 2018-10-21 425 if (status != 0) daef9576 Ettore Chimenti 2018-10-21 426 goto err; daef9576 Ettore Chimenti 2018-10-21 427 daef9576 Ettore Chimenti 2018-10-21 428 key = val & SECOCEC_IR_COMMAND_MASK; daef9576 Ettore Chimenti 2018-10-21 429 addr = (val & SECOCEC_IR_ADDRESS_MASK) >> SECOCEC_IR_ADDRESS_SHL; daef9576 Ettore Chimenti 2018-10-21 430 toggle = (val & SECOCEC_IR_TOGGLE_MASK) >> SECOCEC_IR_TOGGLE_SHL; daef9576 Ettore Chimenti 2018-10-21 431 daef9576 Ettore Chimenti 2018-10-21 @432 rc_keydown(cec->ir, RC_PROTO_RC5, RC_SCANCODE_RC5(addr, key), toggle); daef9576 Ettore Chimenti 2018-10-21 433 daef9576 Ettore Chimenti 2018-10-21 434 dev_dbg(dev, "IR key pressed: 0x%02x addr 0x%02x toggle 0x%02x", key, daef9576 Ettore Chimenti 2018-10-21 435 addr, toggle); daef9576 Ettore Chimenti 2018-10-21 436 daef9576 Ettore Chimenti 2018-10-21 437 return 0; daef9576 Ettore Chimenti 2018-10-21 438 daef9576 Ettore Chimenti 2018-10-21 439 err: daef9576 Ettore Chimenti 2018-10-21 440 dev_err(dev, "IR Receive message failed (%d)", status); daef9576 Ettore Chimenti 2018-10-21 441 return -EIO; daef9576 Ettore Chimenti 2018-10-21 442 } daef9576 Ettore Chimenti 2018-10-21 443 #else daef9576 Ettore Chimenti 2018-10-21 444 static void secocec_ir_rx(struct secocec_data *priv) daef9576 Ettore Chimenti 2018-10-21 445 { daef9576 Ettore Chimenti 2018-10-21 446 } daef9576 Ettore Chimenti 2018-10-21 447 :::::: The code at line 355 was first introduced by commit :::::: daef95769b3a1d60afc31fa97578824a2ff39915 media: seco-cec: add Consumer-IR support :::::: TO: Ettore Chimenti <ek5.chimenti@xxxxxxxxx> :::::: CC: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip