On Jul 30 2016 or thereabouts, kbuild test robot wrote: > Hi, > > [auto build test ERROR on battery/master] > [also build test ERROR on v4.7 next-20160729] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Benjamin-Tissoires/Add-support-for-Microsoft-Surface-3-power/20160729-235348 > base: git://git.infradead.org/battery-2.6.git master > config: tile-allyesconfig (attached as .config) > compiler: tilegx-linux-gcc (GCC) 4.6.2 > reproduce: > wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=tile I guess adding depends on ACPI in the Kconfig should prevent those architectures to be compiled as a target. Will submit a v2 when I get around the issues raised by Lv in 1/2 regarding the ACPICA bits. Cheers, Benjamin > > All errors (new ones prefixed by >>): > > drivers/power/surface3_power.c:52:52: error: expected ')' before 'bool' > drivers/power/surface3_power.c:54:4: error: expected ')' before string constant > drivers/power/surface3_power.c: In function 'mshw0011_notify': > drivers/power/surface3_power.c:199:2: error: implicit declaration of function 'acpi_bus_get_device' > drivers/power/surface3_power.c:202:2: error: implicit declaration of function 'acpi_evaluate_dsm_typed' > drivers/power/surface3_power.c:202:6: warning: assignment makes pointer from integer without a cast [enabled by default] > drivers/power/surface3_power.c: In function 'mshw0011_space_handler': > drivers/power/surface3_power.c:441:23: error: 'ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS' undeclared (first use in this function) > drivers/power/surface3_power.c:441:23: note: each undeclared identifier is reported only once for each function it appears in > drivers/power/surface3_power.c: In function 'mshw0011_install_space_handler': > drivers/power/surface3_power.c:511:2: error: implicit declaration of function 'acpi_bus_attach_private_data' > drivers/power/surface3_power.c:524:3: error: implicit declaration of function 'acpi_bus_detach_private_data' > drivers/power/surface3_power.c:529:2: error: implicit declaration of function 'acpi_walk_dep_device_list' > drivers/power/surface3_power.c: In function 'mshw0011_remove_space_handler': > drivers/power/surface3_power.c:548:2: error: implicit declaration of function 'acpi_bus_get_private_data' > drivers/power/surface3_power.c: In function 'mshw0011_i2c_resource_lookup': > drivers/power/surface3_power.c:582:2: error: implicit declaration of function 'acpi_dev_get_resources' > drivers/power/surface3_power.c:586:2: error: implicit declaration of function 'acpi_dev_free_resource_list' > drivers/power/surface3_power.c:571:21: warning: unused variable 'client' > drivers/power/surface3_power.c: At top level: > drivers/power/surface3_power.c:701:1: warning: data definition has no type or storage class [enabled by default] > drivers/power/surface3_power.c:701:1: error: type defaults to 'int' in declaration of 'MODULE_DEVICE_TABLE' > drivers/power/surface3_power.c:701:1: warning: parameter names (without types) in function declaration [enabled by default] > drivers/power/surface3_power.c:720:1: warning: data definition has no type or storage class [enabled by default] > >> drivers/power/surface3_power.c:720:1: error: type defaults to 'int' in declaration of 'module_init' > drivers/power/surface3_power.c:720:1: warning: parameter names (without types) in function declaration [enabled by default] > drivers/power/surface3_power.c:720:1: warning: data definition has no type or storage class [enabled by default] > >> drivers/power/surface3_power.c:720:1: error: type defaults to 'int' in declaration of 'module_exit' > drivers/power/surface3_power.c:720:1: warning: parameter names (without types) in function declaration [enabled by default] > drivers/power/surface3_power.c:722:15: error: expected declaration specifiers or '...' before string constant > drivers/power/surface3_power.c:723:20: error: expected declaration specifiers or '...' before string constant > drivers/power/surface3_power.c:724:16: error: expected declaration specifiers or '...' before string constant > drivers/power/surface3_power.c:720:1: warning: 'mshw0011_driver_init' defined but not used > cc1: some warnings being treated as errors > > vim +720 drivers/power/surface3_power.c > > 565 return 1; > 566 } > 567 > 568 static int mshw0011_i2c_resource_lookup(struct mshw0011_data *cdata, > 569 unsigned int index) > 570 { > > 571 struct i2c_client *client = cdata->adp1; > 572 struct acpi_device *adev = ACPI_COMPANION(&client->dev); > 573 struct mshw0011_lookup lookup = { > 574 .cdata = cdata, > 575 .index = index, > 576 }; > 577 struct list_head res_list; > 578 int ret; > 579 > 580 INIT_LIST_HEAD(&res_list); > 581 > > 582 ret = acpi_dev_get_resources(adev, &res_list, acpi_find_i2c, &lookup); > 583 if (ret < 0) > 584 return ret; > 585 > 586 acpi_dev_free_resource_list(&res_list); > 587 > 588 if (!lookup.addr) > 589 return -ENOENT; > 590 > 591 return lookup.addr; > 592 } > 593 > 594 static void mshw0011_dump_registers(struct i2c_client *client, > 595 struct i2c_client *bat0, u8 max) > 596 { > 597 char rd_buf[60]; > 598 int error, i, c; > 599 char buff[17 * 3 * 2] = {0}; > 600 > 601 dev_info(&client->dev, "dumping registers 0x00 to 0x%02x:\n", > 602 (max - 1) / 0x20 * 0x20 + 0x1f); > 603 > 604 for (i = 0; i < max; i += 0x20) { > 605 memset(rd_buf, 0, sizeof(rd_buf)); > 606 error = mshw0011_i2c_read_block(bat0, i, rd_buf, 0x20); > 607 dev_info(&client->dev, " read 0x%02x: %*ph|%*ph\n", > 608 i, > 609 0x10, rd_buf, > 610 0x10, rd_buf + 0x10); > 611 for (c = 0; c < 0x20; c++) { > 612 if (rd_buf[c] >= 0x20 && rd_buf[c] <= 0x7e) { > 613 buff[c * 3 + 0] = ' '; > 614 buff[c * 3 + 1] = rd_buf[c]; > 615 } else { > 616 buff[c * 3 + 0] = '-'; > 617 buff[c * 3 + 1] = '-'; > 618 } > 619 buff[c * 3 + 2] = (c + 1) % 0x10 ? ' ' : '|'; > 620 } > 621 buff[0x1f * 3 + 2] = '\0'; > 622 dev_info(&client->dev, "ascii 0x%02x: %s\n", i, buff); > 623 } > 624 } > 625 > 626 static int mshw0011_probe(struct i2c_client *client, > 627 const struct i2c_device_id *id) > 628 { > 629 struct device *dev = &client->dev; > 630 struct i2c_client *bat0; > 631 struct mshw0011_data *data; > 632 int error, version, addr; > 633 > 634 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); > 635 if (!data) > 636 return -ENOMEM; > 637 > 638 data->adp1 = client; > 639 i2c_set_clientdata(client, data); > 640 > 641 addr = mshw0011_i2c_resource_lookup(data, 1); > 642 if (addr < 0) > 643 return addr; > 644 > 645 bat0 = i2c_new_dummy(client->adapter, addr); > 646 if (!bat0) > 647 return -ENOMEM; > 648 > 649 data->bat0 = bat0; > 650 i2c_set_clientdata(bat0, data); > 651 > 652 if (dump_registers) { > 653 mshw0011_dump_registers(client, client, 0xFF); > 654 mshw0011_dump_registers(client, bat0, 0x80); > 655 } > 656 > 657 error = mshw0011_notify(data, 1, MSHW0011_NOTIFY_GET_VERSION, &version); > 658 if (error) > 659 goto out_err; > 660 > 661 data->notify_version = version == MSHW0011_EV_2_5; > 662 > 663 data->poll_task = kthread_run(mshw0011_poll_task, data, "mshw0011_adp"); > 664 if (IS_ERR(data->poll_task)) { > 665 error = PTR_ERR(data->poll_task); > 666 dev_err(&client->dev, "Unable to run kthread err %d\n", error); > 667 goto out_err; > 668 } > 669 > 670 error = mshw0011_install_space_handler(client); > 671 if (error) > 672 goto out_err; > 673 > 674 return 0; > 675 > 676 out_err: > 677 if (data->kthread_running) > 678 kthread_stop(data->poll_task); > 679 i2c_unregister_device(data->bat0); > 680 return error; > 681 } > 682 > 683 static int mshw0011_remove(struct i2c_client *client) > 684 { > 685 struct mshw0011_data *cdata = i2c_get_clientdata(client); > 686 > 687 mshw0011_remove_space_handler(client); > 688 > 689 if (cdata->kthread_running) > 690 kthread_stop(cdata->poll_task); > 691 > 692 i2c_unregister_device(cdata->bat0); > 693 > 694 return 0; > 695 } > 696 > 697 static const struct i2c_device_id mshw0011_id[] = { > 698 { "MSHW0011:00", 0 }, > 699 { } > 700 }; > 701 MODULE_DEVICE_TABLE(i2c, mshw0011_id); > 702 > 703 #ifdef CONFIG_ACPI > 704 static const struct acpi_device_id mshw0011_acpi_match[] = { > 705 { "MSHW0011", 0 }, > 706 { } > 707 }; > 708 MODULE_DEVICE_TABLE(acpi, mshw0011_acpi_match); > 709 #endif > 710 > 711 static struct i2c_driver mshw0011_driver = { > 712 .probe = mshw0011_probe, > 713 .remove = mshw0011_remove, > 714 .id_table = mshw0011_id, > 715 .driver = { > 716 .name = "mshw0011", > 717 .acpi_match_table = ACPI_PTR(mshw0011_acpi_match), > 718 }, > 719 }; > > 720 module_i2c_driver(mshw0011_driver); > 721 > 722 MODULE_AUTHOR("Benjamin Tissoires <benjamin.tissoires@xxxxxxxxx>"); > 723 MODULE_DESCRIPTION("mshw0011 driver"); > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html