Hi Srinivas, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17-rc5 next-20180517] [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/Srinivas-Kandagatla/slimbus-ngd-dt-bindings-Add-slim-ngd-dt-bindings/20180518-193916 config: arm-allmodconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All error/warnings (new ones prefixed by >>): drivers/slimbus/qcom-ngd-ctrl.c: In function 'qcom_slim_ngd_get_laddr': >> drivers/slimbus/qcom-ngd-ctrl.c:862:8: error: implicit declaration of function 'slim_prepare_txn'; did you mean 'slab_prepare_cpu'? [-Werror=implicit-function-declaration] ret = slim_prepare_txn(sctrl, &txn, &done, true); ^~~~~~~~~~~~~~~~ slab_prepare_cpu drivers/slimbus/qcom-ngd-ctrl.c: In function 'qcom_slim_ngd_notify_slaves': >> drivers/slimbus/qcom-ngd-ctrl.c:969:11: error: implicit declaration of function 'of_slim_get_device'; did you mean 'slim_get_device'? [-Werror=implicit-function-declaration] sbdev = of_slim_get_device(&ctrl->ctrl, node); ^~~~~~~~~~~~~~~~~~ slim_get_device >> drivers/slimbus/qcom-ngd-ctrl.c:969:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion] sbdev = of_slim_get_device(&ctrl->ctrl, node); ^ cc1: some warnings being treated as errors vim +862 drivers/slimbus/qcom-ngd-ctrl.c 839 840 static int qcom_slim_ngd_get_laddr(struct slim_controller *sctrl, 841 struct slim_eaddr *ea, u8 *laddr) 842 { 843 DECLARE_COMPLETION_ONSTACK(done); 844 struct slim_val_inf msg = {0}; 845 struct slim_msg_txn txn; 846 u8 wbuf[10] = {0}; 847 u8 rbuf[10] = {0}; 848 int ret; 849 850 txn.mt = SLIM_MSG_MT_DEST_REFERRED_USER; 851 txn.dt = SLIM_MSG_DEST_LOGICALADDR; 852 txn.la = SLIM_LA_MGR; 853 txn.ec = 0; 854 855 txn.mc = SLIM_USR_MC_ADDR_QUERY; 856 txn.rl = 11; 857 txn.msg = &msg; 858 txn.msg->num_bytes = 7; 859 txn.msg->wbuf = wbuf; 860 txn.msg->rbuf = rbuf; 861 > 862 ret = slim_prepare_txn(sctrl, &txn, &done, true); 863 if (ret) 864 return ret; 865 866 wbuf[0] = (u8)txn.tid; 867 memcpy(&wbuf[1], ea, sizeof(*ea)); 868 ret = slim_do_transfer(sctrl, &txn); 869 870 *laddr = rbuf[6]; 871 872 return ret; 873 } 874 875 static int qcom_slim_ngd_exit_dma(struct qcom_slim_ngd_ctrl *ctrl) 876 { 877 if (ctrl->dma_rx_channel) 878 dma_release_channel(ctrl->dma_rx_channel); 879 880 if (ctrl->dma_tx_channel) 881 dma_release_channel(ctrl->dma_tx_channel); 882 883 ctrl->dma_tx_channel = ctrl->dma_rx_channel = NULL; 884 885 return 0; 886 } 887 888 static void qcom_slim_ngd_setup(struct qcom_slim_ngd_ctrl *ctrl) 889 { 890 u32 cfg = readl_relaxed(ctrl->base + 891 NGD_BASE(ctrl->id, ctrl->ver)); 892 893 if (ctrl->state == QCOM_SLIM_NGD_CTRL_DOWN) 894 qcom_slim_ngd_init_dma(ctrl); 895 896 /* By default enable message queues */ 897 cfg |= NGD_CFG_RX_MSGQ_EN; 898 cfg |= NGD_CFG_TX_MSGQ_EN; 899 900 /* Enable NGD if it's not already enabled*/ 901 if (!(cfg & NGD_CFG_ENABLE)) 902 cfg |= NGD_CFG_ENABLE; 903 904 writel_relaxed(cfg, ctrl->base + NGD_BASE(ctrl->id, ctrl->ver)); 905 } 906 907 static int qcom_slim_ngd_power_up(struct qcom_slim_ngd_ctrl *ctrl) 908 { 909 enum qcom_slim_ngd_state cur_state = ctrl->state; 910 void __iomem *ngd; 911 u32 laddr, rx_msgq; 912 int timeout, ret = 0; 913 914 if (ctrl->state == QCOM_SLIM_NGD_CTRL_DOWN) { 915 timeout = wait_for_completion_timeout(&ctrl->qmi.qmi_comp, HZ); 916 if (!timeout) 917 return -EREMOTEIO; 918 } 919 920 if (ctrl->state == QCOM_SLIM_NGD_CTRL_ASLEEP || 921 ctrl->state == QCOM_SLIM_NGD_CTRL_DOWN) { 922 ret = qcom_slim_qmi_power_request(ctrl, true); 923 if (ret) { 924 dev_err(ctrl->dev, "SLIM QMI power request failed:%d\n", 925 ret); 926 return ret; 927 } 928 } 929 930 ctrl->ver = readl_relaxed(ctrl->base); 931 /* Version info in 16 MSbits */ 932 ctrl->ver >>= 16; 933 ngd = ctrl->base + NGD_BASE(ctrl->id, ctrl->ver); 934 laddr = readl_relaxed(ngd + NGD_STATUS); 935 if (laddr & NGD_LADDR) { 936 /* 937 * external MDM restart case where ADSP itself was active framer 938 * For example, modem restarted when playback was active 939 */ 940 if (cur_state == QCOM_SLIM_NGD_CTRL_AWAKE) { 941 dev_info(ctrl->dev, "Subsys restart: ADSP active framer\n"); 942 return 0; 943 } 944 return 0; 945 } 946 947 writel_relaxed(DEF_NGD_INT_MASK, ctrl->base + NGD_INT_EN + 948 NGD_BASE(ctrl->id, ctrl->ver)); 949 rx_msgq = readl_relaxed(ngd + NGD_RX_MSGQ_CFG); 950 951 writel_relaxed(rx_msgq|SLIM_RX_MSGQ_TIMEOUT_VAL, ngd + NGD_RX_MSGQ_CFG); 952 qcom_slim_ngd_setup(ctrl); 953 954 timeout = wait_for_completion_timeout(&ctrl->reconf, HZ); 955 if (!timeout) { 956 dev_err(ctrl->dev, "capability exchange timed-out\n"); 957 return -ETIMEDOUT; 958 } 959 960 return 0; 961 } 962 963 static void qcom_slim_ngd_notify_slaves(struct qcom_slim_ngd_ctrl *ctrl) 964 { 965 struct slim_device *sbdev; 966 struct device_node *node; 967 968 for_each_child_of_node(ctrl->dev->of_node, node) { > 969 sbdev = of_slim_get_device(&ctrl->ctrl, node); 970 if (!sbdev) 971 continue; 972 973 if (slim_get_logical_addr(sbdev)) 974 dev_err(ctrl->dev, "Failed to get logical address\n"); 975 } 976 } 977 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation