Changes to probe GZIP device-tree nodes, open RX windows and setup
GZIP compression type. No plans to provide GZIP usage in kernel right
now, but this patch enables GZIP for user space usage.

Signed-off-by: Haren Myneni <ha...@us.ibm.com>
---
 drivers/crypto/nx/nx-commom-powernv.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/drivers/crypto/nx/nx-commom-powernv.c 
b/drivers/crypto/nx/nx-commom-powernv.c
index 86efa4f..7cc736f 100644
--- a/drivers/crypto/nx/nx-commom-powernv.c
+++ b/drivers/crypto/nx/nx-commom-powernv.c
@@ -49,6 +49,7 @@ struct nx_coproc {
  * Using same values as in skiboot or coprocessor type representing
  * in NX workbook.
  */
+#define        NX_CT_GZIP      (2)     /* on P9 and later */
 #define NX_CT_842      (3)
 
 static inline void nx_add_coprocs_list(struct nx_coproc *coproc,
@@ -198,6 +199,9 @@ static int __init vas_cfg_coproc_info(struct device_node 
*dn, int chip_id,
        if (type == NX_CT_842)
                ret = nx_set_ct(coproc, priority, VAS_COP_TYPE_842_HIPRI,
                                VAS_COP_TYPE_842);
+       else if (type == NX_CT_GZIP)
+               ret = nx_set_ct(coproc, priority, VAS_COP_TYPE_GZIP_HIPRI,
+                               VAS_COP_TYPE_GZIP);
        if (ret)
                goto err_out;
 
@@ -245,12 +249,15 @@ static int __init vas_cfg_coproc_info(struct device_node 
*dn, int chip_id,
        return ret;
 }
 
-static int __init nx_coproc_init(int chip_id, int ct_842)
+static int __init nx_coproc_init(int chip_id, int ct_842, int ct_gzip)
 {
        int ret = 0;
 
        if (opal_check_token(OPAL_NX_COPROC_INIT)) {
                ret = opal_nx_coproc_init(chip_id, ct_842);
+
+               if (!ret)
+                       ret = opal_nx_coproc_init(chip_id, ct_gzip);
                if (ret) {
                        ret = opal_error_code(ret);
                        pr_err("Failed to initialize NX for chip(%d): %d\n",
@@ -280,8 +287,8 @@ static int __init find_nx_device_tree(struct device_node 
*dn, int chip_id,
 static int __init nx_powernv_probe_vas(struct device_node *pn)
 {
        int chip_id, vasid, ret = 0;
+       int ct_842 = 0, ct_gzip = 0;
        struct device_node *dn;
-       int ct_842 = 0;
 
        chip_id = of_get_ibm_chip_id(pn);
        if (chip_id < 0) {
@@ -298,19 +305,22 @@ static int __init nx_powernv_probe_vas(struct device_node 
*pn)
        for_each_child_of_node(pn, dn) {
                ret = find_nx_device_tree(dn, chip_id, vasid, NX_CT_842,
                                        "ibm,p9-nx-842", &ct_842);
+               if (!ret)
+                       ret = find_nx_device_tree(dn, chip_id, vasid,
+                               NX_CT_GZIP, "ibm,p9-nx-gzip", &ct_gzip);
                if (ret)
                        return ret;
        }
 
-       if (!ct_842) {
-               pr_err("NX842 FIFO nodes are missing\n");
+       if (!ct_842 || !ct_gzip) {
+               pr_err("NX FIFO nodes are missing\n");
                return -EINVAL;
        }
 
        /*
         * Initialize NX instance for both high and normal priority FIFOs.
         */
-       ret = nx_coproc_init(chip_id, ct_842);
+       ret = nx_coproc_init(chip_id, ct_842, ct_gzip);
 
        return ret;
 }
-- 
1.8.3.1



Reply via email to