crypto: caam - add backward compatible string sec4.0
authorShengzhou Liu <Shengzhou.Liu@freescale.com>
Wed, 21 Mar 2012 06:09:10 +0000 (14:09 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 29 Mar 2012 08:34:57 +0000 (16:34 +0800)
In some device trees of previous version, there were string "fsl,sec4.0".
To be backward compatible with device trees, we have CAAM driver first
check "fsl,sec-v4.0", if it fails, then check for "fsl,sec4.0".

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamalg.c
drivers/crypto/caam/ctrl.c

index 534a36469d57df7e6599b702e90dc975471e3678..4eec389184d3f06d3fb59d161d485226b9a3ef38 100644 (file)
@@ -2267,8 +2267,11 @@ static void __exit caam_algapi_exit(void)
        int i, err;
 
        dev_node = of_find_compatible_node(NULL, NULL, "fsl,sec-v4.0");
-       if (!dev_node)
-               return;
+       if (!dev_node) {
+               dev_node = of_find_compatible_node(NULL, NULL, "fsl,sec4.0");
+               if (!dev_node)
+                       return;
+       }
 
        pdev = of_find_device_by_node(dev_node);
        if (!pdev)
@@ -2350,8 +2353,11 @@ static int __init caam_algapi_init(void)
        int i = 0, err = 0;
 
        dev_node = of_find_compatible_node(NULL, NULL, "fsl,sec-v4.0");
-       if (!dev_node)
-               return -ENODEV;
+       if (!dev_node) {
+               dev_node = of_find_compatible_node(NULL, NULL, "fsl,sec4.0");
+               if (!dev_node)
+                       return -ENODEV;
+       }
 
        pdev = of_find_device_by_node(dev_node);
        if (!pdev)
index c5f61c55d923f04e6ef1e701555ddf760a1bb6f5..77557ebcd337f71d8ec2876d4b5e6d4e017393a0 100644 (file)
@@ -98,6 +98,12 @@ static int caam_probe(struct platform_device *pdev)
        rspec = 0;
        for_each_compatible_node(np, NULL, "fsl,sec-v4.0-job-ring")
                rspec++;
+       if (!rspec) {
+               /* for backward compatible with device trees */
+               for_each_compatible_node(np, NULL, "fsl,sec4.0-job-ring")
+                       rspec++;
+       }
+
        ctrlpriv->jrdev = kzalloc(sizeof(struct device *) * rspec, GFP_KERNEL);
        if (ctrlpriv->jrdev == NULL) {
                iounmap(&topregs->ctrl);
@@ -111,6 +117,13 @@ static int caam_probe(struct platform_device *pdev)
                ctrlpriv->total_jobrs++;
                ring++;
        }
+       if (!ring) {
+               for_each_compatible_node(np, NULL, "fsl,sec4.0-job-ring") {
+                       caam_jr_probe(pdev, np, ring);
+                       ctrlpriv->total_jobrs++;
+                       ring++;
+               }
+       }
 
        /* Check to see if QI present. If so, enable */
        ctrlpriv->qi_present = !!(rd_reg64(&topregs->ctrl.perfmon.comp_parms) &
@@ -226,6 +239,9 @@ static struct of_device_id caam_match[] = {
        {
                .compatible = "fsl,sec-v4.0",
        },
+       {
+               .compatible = "fsl,sec4.0",
+       },
        {},
 };
 MODULE_DEVICE_TABLE(of, caam_match);