Loading drivers/slimbus/slim-msm-ngd.c +12 −3 Original line number Diff line number Diff line Loading @@ -1432,7 +1432,7 @@ static int ngd_slim_probe(struct platform_device *pdev) init_completion(&dev->reconf); init_completion(&dev->ctrl_up); mutex_init(&dev->tx_lock); mutex_init(&dev->tx_buf_lock); spin_lock_init(&dev->tx_buf_lock); spin_lock_init(&dev->rx_lock); dev->ee = 1; dev->irq = irq->start; Loading Loading @@ -1460,9 +1460,18 @@ static int ngd_slim_probe(struct platform_device *pdev) dev->ctrl.dev.of_node = pdev->dev.of_node; dev->state = MSM_CTRL_DOWN; ret = request_threaded_irq(dev->irq, NULL, /* * As this does not perform expensive * operations, it can execute in an * interrupt context. This avoids * context switches, provides * extensive benifits and performance * improvements. */ ret = request_irq(dev->irq, ngd_slim_interrupt, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "ngd_slim_irq", dev); IRQF_TRIGGER_HIGH, "ngd_slim_irq", dev); if (ret) { dev_err(&pdev->dev, "request IRQ failed\n"); Loading drivers/slimbus/slim-msm.c +11 −9 Original line number Diff line number Diff line Loading @@ -503,17 +503,18 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, int ret = 0; int retries = 0; u32 *retbuf = NULL; unsigned long flags; mutex_lock(&dev->tx_buf_lock); spin_lock_irqsave(&dev->tx_buf_lock, flags); if (!getbuf) { msm_slim_tx_msg_return(dev, err); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return NULL; } retbuf = msm_slim_modify_tx_buf(dev, comp); if (retbuf) { mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return retbuf; } Loading @@ -526,7 +527,7 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, if (retries > 0) SLIM_INFO(dev, "SLIM TX retrieved:%d retries", retries); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return retbuf; } Loading @@ -534,14 +535,14 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, * superframe size will vary based on clock gear * 1 superframe will consume at least 1 message * if HW is in good condition. With MX_RETRIES, * make sure we wait for a [3, 10] superframes * make sure we wait for ~2 superframes * before deciding HW couldn't process descriptors */ usleep_range(100, 250); udelay(50); retries++; } while (ret && (retries < INIT_MX_RETRIES)); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return NULL; } Loading Loading @@ -690,6 +691,7 @@ int msm_slim_connect_endp(struct msm_slim_ctrl *dev, struct sps_register_event sps_error_event; /* SPS_ERROR */ struct sps_register_event sps_descr_event; /* DESCR_DONE */ struct sps_connect *config = &endpoint->config; unsigned long flags; ret = sps_connect(endpoint->sps, config); if (ret) { Loading Loading @@ -743,12 +745,12 @@ int msm_slim_connect_endp(struct msm_slim_ctrl *dev, } dev->use_rx_msgqs = MSM_MSGQ_ENABLED; } else { mutex_lock(&dev->tx_buf_lock); spin_lock_irqsave(&dev->tx_buf_lock, flags); dev->tx_tail = 0; dev->tx_head = 0; for (i = 0; i < MSM_TX_BUFS; i++) dev->wr_comp[i] = NULL; mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); dev->use_tx_msgqs = MSM_MSGQ_ENABLED; } Loading drivers/slimbus/slim-msm.h +1 −1 Original line number Diff line number Diff line Loading @@ -257,7 +257,7 @@ struct msm_slim_ctrl { struct clk *rclk; struct clk *hclk; struct mutex tx_lock; struct mutex tx_buf_lock; spinlock_t tx_buf_lock; u8 pgdla; enum msm_slim_msgq use_rx_msgqs; enum msm_slim_msgq use_tx_msgqs; Loading Loading
drivers/slimbus/slim-msm-ngd.c +12 −3 Original line number Diff line number Diff line Loading @@ -1432,7 +1432,7 @@ static int ngd_slim_probe(struct platform_device *pdev) init_completion(&dev->reconf); init_completion(&dev->ctrl_up); mutex_init(&dev->tx_lock); mutex_init(&dev->tx_buf_lock); spin_lock_init(&dev->tx_buf_lock); spin_lock_init(&dev->rx_lock); dev->ee = 1; dev->irq = irq->start; Loading Loading @@ -1460,9 +1460,18 @@ static int ngd_slim_probe(struct platform_device *pdev) dev->ctrl.dev.of_node = pdev->dev.of_node; dev->state = MSM_CTRL_DOWN; ret = request_threaded_irq(dev->irq, NULL, /* * As this does not perform expensive * operations, it can execute in an * interrupt context. This avoids * context switches, provides * extensive benifits and performance * improvements. */ ret = request_irq(dev->irq, ngd_slim_interrupt, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "ngd_slim_irq", dev); IRQF_TRIGGER_HIGH, "ngd_slim_irq", dev); if (ret) { dev_err(&pdev->dev, "request IRQ failed\n"); Loading
drivers/slimbus/slim-msm.c +11 −9 Original line number Diff line number Diff line Loading @@ -503,17 +503,18 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, int ret = 0; int retries = 0; u32 *retbuf = NULL; unsigned long flags; mutex_lock(&dev->tx_buf_lock); spin_lock_irqsave(&dev->tx_buf_lock, flags); if (!getbuf) { msm_slim_tx_msg_return(dev, err); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return NULL; } retbuf = msm_slim_modify_tx_buf(dev, comp); if (retbuf) { mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return retbuf; } Loading @@ -526,7 +527,7 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, if (retries > 0) SLIM_INFO(dev, "SLIM TX retrieved:%d retries", retries); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return retbuf; } Loading @@ -534,14 +535,14 @@ u32 *msm_slim_manage_tx_msgq(struct msm_slim_ctrl *dev, bool getbuf, * superframe size will vary based on clock gear * 1 superframe will consume at least 1 message * if HW is in good condition. With MX_RETRIES, * make sure we wait for a [3, 10] superframes * make sure we wait for ~2 superframes * before deciding HW couldn't process descriptors */ usleep_range(100, 250); udelay(50); retries++; } while (ret && (retries < INIT_MX_RETRIES)); mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); return NULL; } Loading Loading @@ -690,6 +691,7 @@ int msm_slim_connect_endp(struct msm_slim_ctrl *dev, struct sps_register_event sps_error_event; /* SPS_ERROR */ struct sps_register_event sps_descr_event; /* DESCR_DONE */ struct sps_connect *config = &endpoint->config; unsigned long flags; ret = sps_connect(endpoint->sps, config); if (ret) { Loading Loading @@ -743,12 +745,12 @@ int msm_slim_connect_endp(struct msm_slim_ctrl *dev, } dev->use_rx_msgqs = MSM_MSGQ_ENABLED; } else { mutex_lock(&dev->tx_buf_lock); spin_lock_irqsave(&dev->tx_buf_lock, flags); dev->tx_tail = 0; dev->tx_head = 0; for (i = 0; i < MSM_TX_BUFS; i++) dev->wr_comp[i] = NULL; mutex_unlock(&dev->tx_buf_lock); spin_unlock_irqrestore(&dev->tx_buf_lock, flags); dev->use_tx_msgqs = MSM_MSGQ_ENABLED; } Loading
drivers/slimbus/slim-msm.h +1 −1 Original line number Diff line number Diff line Loading @@ -257,7 +257,7 @@ struct msm_slim_ctrl { struct clk *rclk; struct clk *hclk; struct mutex tx_lock; struct mutex tx_buf_lock; spinlock_t tx_buf_lock; u8 pgdla; enum msm_slim_msgq use_rx_msgqs; enum msm_slim_msgq use_tx_msgqs; Loading