Guest User

Untitled

a guest
Jun 13th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. v3-1-4-gpu-ipu-v3-remove-IRQ-dance-on-DC-channel-disable.patch
  2.  
  3.  
  4. diff --git a/drivers/gpu/ipu-v3/ipu-dc.c b/drivers/gpu/ipu-v3/ipu-dc.c
  5. index 659475c1e44ab..7a4b8362dda8f 100644
  6. --- a/drivers/gpu/ipu-v3/ipu-dc.c
  7. +++ b/drivers/gpu/ipu-v3/ipu-dc.c
  8. @@ -112,8 +112,6 @@ struct ipu_dc_priv {
  9. struct ipu_dc channels[IPU_DC_NUM_CHANNELS];
  10. struct mutex mutex;
  11. struct completion comp;
  12. - int dc_irq;
  13. - int dp_irq;
  14. int use_count;
  15. };
  16.  
  17. @@ -262,47 +260,13 @@ void ipu_dc_enable_channel(struct ipu_dc *dc)
  18. }
  19. EXPORT_SYMBOL_GPL(ipu_dc_enable_channel);
  20.  
  21. -static irqreturn_t dc_irq_handler(int irq, void *dev_id)
  22. -{
  23. - struct ipu_dc *dc = dev_id;
  24. - u32 reg;
  25. -
  26. - reg = readl(dc->base + DC_WR_CH_CONF);
  27. - reg &= ~DC_WR_CH_CONF_PROG_TYPE_MASK;
  28. - writel(reg, dc->base + DC_WR_CH_CONF);
  29. -
  30. - /* The Freescale BSP kernel clears DIx_COUNTER_RELEASE here */
  31. -
  32. - complete(&dc->priv->comp);
  33. - return IRQ_HANDLED;
  34. -}
  35. -
  36. void ipu_dc_disable_channel(struct ipu_dc *dc)
  37. {
  38. - struct ipu_dc_priv *priv = dc->priv;
  39. - int irq;
  40. - unsigned long ret;
  41. u32 val;
  42.  
  43. - /* TODO: Handle MEM_FG_SYNC differently from MEM_BG_SYNC */
  44. - if (dc->chno == 1)
  45. - irq = priv->dc_irq;
  46. - else if (dc->chno == 5)
  47. - irq = priv->dp_irq;
  48. - else
  49. - return;
  50. -
  51. - init_completion(&priv->comp);
  52. - enable_irq(irq);
  53. - ret = wait_for_completion_timeout(&priv->comp, msecs_to_jiffies(50));
  54. - disable_irq(irq);
  55. - if (ret == 0) {
  56. - dev_warn(priv->dev, "DC stop timeout after 50 ms\n");
  57. -
  58. - val = readl(dc->base + DC_WR_CH_CONF);
  59. - val &= ~DC_WR_CH_CONF_PROG_TYPE_MASK;
  60. - writel(val, dc->base + DC_WR_CH_CONF);
  61. - }
  62. + val = readl(dc->base + DC_WR_CH_CONF);
  63. + val &= ~DC_WR_CH_CONF_PROG_TYPE_MASK;
  64. + writel(val, dc->base + DC_WR_CH_CONF);
  65. }
  66. EXPORT_SYMBOL_GPL(ipu_dc_disable_channel);
  67.  
  68. @@ -389,7 +353,7 @@ int ipu_dc_init(struct ipu_soc *ipu, struct device *dev,
  69. struct ipu_dc_priv *priv;
  70. static int channel_offsets[] = { 0, 0x1c, 0x38, 0x54, 0x58, 0x5c,
  71. 0x78, 0, 0x94, 0xb4};
  72. - int i, ret;
  73. + int i;
  74.  
  75. priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
  76. if (!priv)
  77. @@ -410,23 +374,6 @@ int ipu_dc_init(struct ipu_soc *ipu, struct device *dev,
  78. priv->channels[i].base = priv->dc_reg + channel_offsets[i];
  79. }
  80.  
  81. - priv->dc_irq = ipu_map_irq(ipu, IPU_IRQ_DC_FC_1);
  82. - if (!priv->dc_irq)
  83. - return -EINVAL;
  84. - ret = devm_request_irq(dev, priv->dc_irq, dc_irq_handler, 0, NULL,
  85. - &priv->channels[1]);
  86. - if (ret < 0)
  87. - return ret;
  88. - disable_irq(priv->dc_irq);
  89. - priv->dp_irq = ipu_map_irq(ipu, IPU_IRQ_DP_SF_END);
  90. - if (!priv->dp_irq)
  91. - return -EINVAL;
  92. - ret = devm_request_irq(dev, priv->dp_irq, dc_irq_handler, 0, NULL,
  93. - &priv->channels[5]);
  94. - if (ret < 0)
  95. - return ret;
  96. - disable_irq(priv->dp_irq);
  97. -
  98. writel(DC_WR_CH_CONF_WORD_SIZE_24 | DC_WR_CH_CONF_DISP_ID_PARALLEL(1) |
  99. DC_WR_CH_CONF_PROG_DI_ID,
  100. priv->channels[1].base + DC_WR_CH_CONF);
Advertisement
Add Comment
Please, Sign In to add comment