|
@@ -1793,8 +1793,36 @@ caam_hash_alloc(struct caam_hash_template *template,
|
|
|
|
|
|
static int __init caam_algapi_hash_init(void)
|
|
|
{
|
|
|
+ struct device_node *dev_node;
|
|
|
+ struct platform_device *pdev;
|
|
|
+ struct device *ctrldev;
|
|
|
+ void *priv;
|
|
|
int i = 0, err = 0;
|
|
|
|
|
|
+ dev_node = of_find_compatible_node(NULL, NULL, "fsl,sec-v4.0");
|
|
|
+ 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) {
|
|
|
+ of_node_put(dev_node);
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ ctrldev = &pdev->dev;
|
|
|
+ priv = dev_get_drvdata(ctrldev);
|
|
|
+ of_node_put(dev_node);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If priv is NULL, it's probably because the caam driver wasn't
|
|
|
+ * properly initialized (e.g. RNG4 init failed). Thus, bail out here.
|
|
|
+ */
|
|
|
+ if (!priv)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
INIT_LIST_HEAD(&hash_list);
|
|
|
|
|
|
/* register crypto algorithms the device supports */
|