aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape')
-rw-r--r--target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch94
-rw-r--r--target/linux/layerscape/patches-4.9/807-gpu-support-layerscape.patch16
-rw-r--r--target/linux/layerscape/patches-4.9/810-iommu-support-layerscape.patch8
3 files changed, 14 insertions, 104 deletions
diff --git a/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch b/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
index f6a7bca7cb..8ce3b56e3b 100644
--- a/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
@@ -24281,15 +24281,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
#endif /* CAAM_ERROR_H */
--- a/drivers/crypto/caam/intern.h
+++ b/drivers/crypto/caam/intern.h
-@@ -41,6 +41,7 @@ struct caam_drv_private_jr {
- struct device *dev;
- int ridx;
- struct caam_job_ring __iomem *rregs; /* JobR's register space */
-+ struct tasklet_struct irqtask;
- int irq; /* One per queue */
-
- /* Number of scatterlist crypt transforms active on the JobR */
-@@ -63,10 +64,9 @@ struct caam_drv_private_jr {
+@@ -64,10 +64,9 @@ struct caam_drv_private_jr {
* Driver-private storage for a single CAAM block instance
*/
struct caam_drv_private {
@@ -24303,7 +24295,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
/* Physical-presence section */
struct caam_ctrl __iomem *ctrl; /* controller region */
-@@ -102,11 +102,6 @@ struct caam_drv_private {
+@@ -103,11 +102,6 @@ struct caam_drv_private {
#ifdef CONFIG_DEBUG_FS
struct dentry *dfs_root;
struct dentry *ctl; /* controller dir */
@@ -24315,7 +24307,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
struct debugfs_blob_wrapper ctl_kek_wrap, ctl_tkek_wrap, ctl_tdsk_wrap;
struct dentry *ctl_kek, *ctl_tkek, *ctl_tdsk;
#endif
-@@ -114,4 +109,22 @@ struct caam_drv_private {
+@@ -115,4 +109,22 @@ struct caam_drv_private {
void caam_jr_algapi_init(struct device *dev);
void caam_jr_algapi_remove(struct device *dev);
@@ -24363,16 +24355,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
static int caam_reset_hw_jr(struct device *dev)
{
struct caam_drv_private_jr *jrp = dev_get_drvdata(dev);
-@@ -73,6 +82,8 @@ static int caam_jr_shutdown(struct devic
-
- ret = caam_reset_hw_jr(dev);
-
-+ tasklet_kill(&jrp->irqtask);
-+
- /* Release interrupt */
- free_irq(jrp->irq, dev);
-
-@@ -116,6 +127,8 @@ static int caam_jr_remove(struct platfor
+@@ -118,6 +127,8 @@ static int caam_jr_remove(struct platfor
dev_err(jrdev, "Failed to shut down job ring\n");
irq_dispose_mapping(jrpriv->irq);
@@ -24381,47 +24364,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
return ret;
}
-@@ -128,7 +141,7 @@ static irqreturn_t caam_jr_interrupt(int
-
- /*
- * Check the output ring for ready responses, kick
-- * the threaded irq if jobs done.
-+ * tasklet if jobs done.
- */
- irqstate = rd_reg32(&jrp->rregs->jrintstatus);
- if (!irqstate)
-@@ -150,13 +163,18 @@ static irqreturn_t caam_jr_interrupt(int
- /* Have valid interrupt at this point, just ACK and trigger */
- wr_reg32(&jrp->rregs->jrintstatus, irqstate);
-
-- return IRQ_WAKE_THREAD;
-+ preempt_disable();
-+ tasklet_schedule(&jrp->irqtask);
-+ preempt_enable();
-+
-+ return IRQ_HANDLED;
- }
-
--static irqreturn_t caam_jr_threadirq(int irq, void *st_dev)
-+/* Deferred service handler, run as interrupt-fired tasklet */
-+static void caam_jr_dequeue(unsigned long devarg)
- {
- int hw_idx, sw_idx, i, head, tail;
-- struct device *dev = st_dev;
-+ struct device *dev = (struct device *)devarg;
- struct caam_drv_private_jr *jrp = dev_get_drvdata(dev);
- void (*usercall)(struct device *dev, u32 *desc, u32 status, void *arg);
- u32 *userdesc, userstatus;
-@@ -230,8 +248,6 @@ static irqreturn_t caam_jr_threadirq(int
-
- /* reenable / unmask IRQs */
- clrsetbits_32(&jrp->rregs->rconfig_lo, JRCFG_IMSK, 0);
--
-- return IRQ_HANDLED;
- }
-
- /**
-@@ -275,6 +291,36 @@ struct device *caam_jr_alloc(void)
+@@ -280,6 +291,36 @@ struct device *caam_jr_alloc(void)
EXPORT_SYMBOL(caam_jr_alloc);
/**
@@ -24458,30 +24401,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
* caam_jr_free() - Free the Job Ring
* @rdev - points to the dev that identifies the Job ring to
* be released.
-@@ -389,10 +435,11 @@ static int caam_jr_init(struct device *d
-
- jrp = dev_get_drvdata(dev);
-
-+ tasklet_init(&jrp->irqtask, caam_jr_dequeue, (unsigned long)dev);
-+
- /* Connect job ring interrupt handler. */
-- error = request_threaded_irq(jrp->irq, caam_jr_interrupt,
-- caam_jr_threadirq, IRQF_SHARED,
-- dev_name(dev), dev);
-+ error = request_irq(jrp->irq, caam_jr_interrupt, IRQF_SHARED,
-+ dev_name(dev), dev);
- if (error) {
- dev_err(dev, "can't connect JobR %d interrupt (%d)\n",
- jrp->ridx, jrp->irq);
-@@ -454,6 +501,7 @@ out_free_inpring:
- out_free_irq:
- free_irq(jrp->irq, dev);
- out_kill_deq:
-+ tasklet_kill(&jrp->irqtask);
- return error;
- }
-
-@@ -489,15 +537,28 @@ static int caam_jr_probe(struct platform
+@@ -496,15 +537,28 @@ static int caam_jr_probe(struct platform
return -ENOMEM;
}
@@ -24517,7 +24437,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
/* Identify the interrupt */
jrpriv->irq = irq_of_parse_and_map(nprop, 0);
-@@ -517,10 +578,12 @@ static int caam_jr_probe(struct platform
+@@ -524,10 +578,12 @@ static int caam_jr_probe(struct platform
atomic_set(&jrpriv->tfm_count, 0);
diff --git a/target/linux/layerscape/patches-4.9/807-gpu-support-layerscape.patch b/target/linux/layerscape/patches-4.9/807-gpu-support-layerscape.patch
index 6c81b00449..cd99f94925 100644
--- a/target/linux/layerscape/patches-4.9/807-gpu-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/807-gpu-support-layerscape.patch
@@ -27,10 +27,10 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
+ disable_irq(fsl_dev->irq);
+
- clk_disable_unprepare(fsl_dev->pix_clk);
clk_disable_unprepare(fsl_dev->clk);
-@@ -263,6 +264,14 @@ static int fsl_dcu_drm_pm_resume(struct
+ return 0;
+@@ -262,6 +263,12 @@ static int fsl_dcu_drm_pm_resume(struct
return ret;
}
@@ -40,20 +40,10 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
+ return ret;
+ }
+
-+ enable_irq(fsl_dev->irq);
-+
if (fsl_dev->tcon)
fsl_tcon_bypass_enable(fsl_dev->tcon);
fsl_dcu_drm_init_planes(fsl_dev->drm);
-@@ -273,7 +282,6 @@ static int fsl_dcu_drm_pm_resume(struct
- console_unlock();
-
- drm_kms_helper_poll_enable(fsl_dev->drm);
-- enable_irq(fsl_dev->irq);
-
- return 0;
- }
-@@ -389,6 +397,12 @@ static int fsl_dcu_drm_probe(struct plat
+@@ -388,6 +395,12 @@ static int fsl_dcu_drm_probe(struct plat
goto disable_clk;
}
diff --git a/target/linux/layerscape/patches-4.9/810-iommu-support-layerscape.patch b/target/linux/layerscape/patches-4.9/810-iommu-support-layerscape.patch
index 657a38fece..7773e70e9e 100644
--- a/target/linux/layerscape/patches-4.9/810-iommu-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/810-iommu-support-layerscape.patch
@@ -995,7 +995,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
};
struct dmar_atsr_unit {
-@@ -4250,27 +4251,40 @@ static inline void init_iommu_pm_ops(voi
+@@ -4252,27 +4253,40 @@ static inline void init_iommu_pm_ops(voi
int __init dmar_parse_one_rmrr(struct acpi_dmar_header *header, void *arg)
{
struct acpi_dmar_reserved_memory *rmrr;
@@ -1041,7 +1041,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
}
static struct dmar_atsr_unit *dmar_find_atsr(struct acpi_dmar_atsr *atsr)
-@@ -4484,6 +4498,7 @@ static void intel_iommu_free_dmars(void)
+@@ -4486,6 +4500,7 @@ static void intel_iommu_free_dmars(void)
list_for_each_entry_safe(rmrru, rmrr_n, &dmar_rmrr_units, list) {
list_del(&rmrru->list);
dmar_free_dev_scope(&rmrru->devices, &rmrru->devices_cnt);
@@ -1049,7 +1049,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
kfree(rmrru);
}
-@@ -5219,6 +5234,45 @@ static void intel_iommu_remove_device(st
+@@ -5221,6 +5236,45 @@ static void intel_iommu_remove_device(st
iommu_device_unlink(iommu->iommu_dev, dev);
}
@@ -1095,7 +1095,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
#ifdef CONFIG_INTEL_IOMMU_SVM
#define MAX_NR_PASID_BITS (20)
static inline unsigned long intel_iommu_get_pts(struct intel_iommu *iommu)
-@@ -5349,19 +5403,21 @@ struct intel_iommu *intel_svm_device_to_
+@@ -5351,19 +5405,21 @@ struct intel_iommu *intel_svm_device_to_
#endif /* CONFIG_INTEL_IOMMU_SVM */
static const struct iommu_ops intel_iommu_ops = {