tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: a72b55bc981b62f7186600d06d1824f1d0612b27 commit: 960f9df7c620ecb6030aff1d9a6c3d67598b8290 [1712/2220] HID: mcp2221: add ADC/DAC support via iio subsystem config: i386-randconfig-a016-20221017 compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=960f9df7c620ecb6030aff1d9a6c3d67598b8290 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 960f9df7c620ecb6030aff1d9a6c3d67598b8290 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/hid/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/hid/hid-mcp2221.c:734:11: warning: unused variable 'tmp' [-Wunused-variable] u8 *buf, tmp; ^ 1 warning generated. vim +/tmp +734 drivers/hid/hid-mcp2221.c 721 722 /* 723 * MCP2221 uses interrupt endpoint for input reports. This function 724 * is called by HID layer when it receives i/p report from mcp2221, 725 * which is actually a response to the previously sent command. 726 * 727 * MCP2221A firmware specific return codes are parsed and 0 or 728 * appropriate negative error code is returned. Delayed response 729 * results in timeout error and stray reponses results in -EIO. 730 */ 731 static int mcp2221_raw_event(struct hid_device *hdev, 732 struct hid_report *report, u8 *data, int size) 733 { > 734 u8 *buf, tmp; 735 struct mcp2221 *mcp = hid_get_drvdata(hdev); 736 737 switch (data[0]) { 738 739 case MCP2221_I2C_WR_DATA: 740 case MCP2221_I2C_WR_NO_STOP: 741 case MCP2221_I2C_RD_DATA: 742 case MCP2221_I2C_RD_RPT_START: 743 switch (data[1]) { 744 case MCP2221_SUCCESS: 745 mcp->status = 0; 746 break; 747 default: 748 mcp->status = mcp_get_i2c_eng_state(mcp, data, 2); 749 } 750 complete(&mcp->wait_in_report); 751 break; 752 753 case MCP2221_I2C_PARAM_OR_STATUS: 754 switch (data[1]) { 755 case MCP2221_SUCCESS: 756 if ((mcp->txbuf[3] == MCP2221_I2C_SET_SPEED) && 757 (data[3] != MCP2221_I2C_SET_SPEED)) { 758 mcp->status = -EAGAIN; 759 break; 760 } 761 if (data[20] & MCP2221_I2C_MASK_ADDR_NACK) { 762 mcp->status = -ENXIO; 763 break; 764 } 765 mcp->status = mcp_get_i2c_eng_state(mcp, data, 8); 766 #if IS_REACHABLE(CONFIG_IIO) 767 memcpy(&mcp->adc_values, &data[50], sizeof(mcp->adc_values)); 768 #endif 769 break; 770 default: 771 mcp->status = -EIO; 772 } 773 complete(&mcp->wait_in_report); 774 break; 775 776 case MCP2221_I2C_GET_DATA: 777 switch (data[1]) { 778 case MCP2221_SUCCESS: 779 if (data[2] == MCP2221_I2C_ADDR_NACK) { 780 mcp->status = -ENXIO; 781 break; 782 } 783 if (!mcp_get_i2c_eng_state(mcp, data, 2) 784 && (data[3] == 0)) { 785 mcp->status = 0; 786 break; 787 } 788 if (data[3] == 127) { 789 mcp->status = -EIO; 790 break; 791 } 792 if (data[2] == MCP2221_I2C_READ_COMPL) { 793 buf = mcp->rxbuf; 794 memcpy(&buf[mcp->rxbuf_idx], &data[4], data[3]); 795 mcp->rxbuf_idx = mcp->rxbuf_idx + data[3]; 796 mcp->status = 0; 797 break; 798 } 799 mcp->status = -EIO; 800 break; 801 default: 802 mcp->status = -EIO; 803 } 804 complete(&mcp->wait_in_report); 805 break; 806 807 case MCP2221_GPIO_GET: 808 switch (data[1]) { 809 case MCP2221_SUCCESS: 810 if ((data[mcp->gp_idx] == MCP2221_ALT_F_NOT_GPIOV) || 811 (data[mcp->gp_idx + 1] == MCP2221_ALT_F_NOT_GPIOD)) { 812 mcp->status = -ENOENT; 813 } else { 814 mcp->status = !!data[mcp->gp_idx]; 815 mcp->gpio_dir = data[mcp->gp_idx + 1]; 816 } 817 break; 818 default: 819 mcp->status = -EAGAIN; 820 } 821 complete(&mcp->wait_in_report); 822 break; 823 824 case MCP2221_GPIO_SET: 825 switch (data[1]) { 826 case MCP2221_SUCCESS: 827 if ((data[mcp->gp_idx] == MCP2221_ALT_F_NOT_GPIOV) || 828 (data[mcp->gp_idx - 1] == MCP2221_ALT_F_NOT_GPIOV)) { 829 mcp->status = -ENOENT; 830 } else { 831 mcp->status = 0; 832 } 833 break; 834 default: 835 mcp->status = -EAGAIN; 836 } 837 complete(&mcp->wait_in_report); 838 break; 839 840 case MCP2221_SET_SRAM_SETTINGS: 841 switch (data[1]) { 842 case MCP2221_SUCCESS: 843 mcp->status = 0; 844 break; 845 default: 846 mcp->status = -EAGAIN; 847 } 848 complete(&mcp->wait_in_report); 849 break; 850 851 case MCP2221_GET_SRAM_SETTINGS: 852 switch (data[1]) { 853 case MCP2221_SUCCESS: 854 memcpy(&mcp->mode, &data[22], 4); 855 #if IS_REACHABLE(CONFIG_IIO) 856 mcp->dac_value = data[6] & GENMASK(4, 0); 857 #endif 858 mcp->status = 0; 859 break; 860 default: 861 mcp->status = -EAGAIN; 862 } 863 complete(&mcp->wait_in_report); 864 break; 865 866 case MCP2221_READ_FLASH_DATA: 867 switch (data[1]) { 868 case MCP2221_SUCCESS: 869 mcp->status = 0; 870 871 /* Only handles CHIP SETTINGS subpage currently */ 872 if (mcp->txbuf[1] != 0) { 873 mcp->status = -EIO; 874 break; 875 } 876 -- 0-DAY CI Kernel Test Service https://01.org/lkp