[alsa-devel] [PATCH 2/2] slimbus: ngd: Add qcom SLIMBus NGD driver

Srinivas Kandagatla srinivas.kandagatla at linaro.org
Mon May 21 10:54:09 CEST 2018


Thanks for the report!

This patch has dependency on https://lkml.org/lkml/2018/5/17/251

I should have mentioned this in cover letter!

thanks,
srini

On 18/05/18 22:39, kbuild test robot wrote:
> 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
> 


More information about the Alsa-devel mailing list