}
 
        dci = edac_device_alloc_ctl_info(sizeof(*drvdata), ecc_name,
-                                        1, ecc_name, 1, 0, NULL, 0,
-                                        dev_instance++);
+                                        1, ecc_name, 1, 0, dev_instance++);
 
        if (!dci) {
                edac_printk(KERN_ERR, EDAC_DEVICE,
        /* Create the PortB EDAC device */
        edac_idx = edac_device_alloc_index();
        dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name, 1,
-                                        ecc_name, 1, 0, NULL, 0, edac_idx);
+                                        ecc_name, 1, 0, edac_idx);
        if (!dci) {
                edac_printk(KERN_ERR, EDAC_DEVICE,
                            "%s: Unable to allocate PortB EDAC device\n",
 
        edac_idx = edac_device_alloc_index();
        dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name,
-                                        1, ecc_name, 1, 0, NULL, 0,
-                                        edac_idx);
+                                        1, ecc_name, 1, 0, edac_idx);
 
        if (!dci) {
                edac_printk(KERN_ERR, EDAC_DEVICE,
 
        dev_info->edac_idx = edac_device_alloc_index();
        dev_info->edac_dev =
                edac_device_alloc_ctl_info(0, dev_info->ctl_name, 1,
-                                          NULL, 0, 0,
-                                          NULL, 0, dev_info->edac_idx);
+                                          NULL, 0, 0, dev_info->edac_idx);
        if (!dev_info->edac_dev) {
                ret = -ENOMEM;
                goto err_dev_put;
 
                dev_warn(&pdev->dev, "data ECC is not enabled\n");
 
        dci = edac_device_alloc_ctl_info(sizeof(*drvdata),
-                                        "cpu", 1, "L", 1, 2, NULL, 0, 0);
+                                        "cpu", 1, "L", 1, 2, 0);
        if (!dci)
                return -ENOMEM;
 
 
                dev_info->edac_idx = edac_device_alloc_index();
                dev_info->edac_dev =
                        edac_device_alloc_ctl_info(0, dev_info->ctl_name,
-                               1, NULL, 0, 0, NULL, 0, dev_info->edac_idx);
+                               1, NULL, 0, 0, dev_info->edac_idx);
                if (!dev_info->edac_dev) {
                        cpc925_printk(KERN_ERR, "No memory for edac device\n");
                        goto err1;
 
 struct edac_device_ctl_info *
 edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instances,
                           char *blk_name, unsigned nr_blocks, unsigned off_val,
-                          struct edac_dev_sysfs_block_attribute *attrib_spec,
-                          unsigned nr_attrib, int device_index)
+                          int device_index)
 {
-       struct edac_dev_sysfs_block_attribute *dev_attrib, *attrib_p, *attrib;
        struct edac_device_block *dev_blk, *blk_p, *blk;
        struct edac_device_instance *dev_inst, *inst;
        struct edac_device_ctl_info *dev_ctl;
-       unsigned instance, block, attr;
+       unsigned instance, block;
        void *pvt;
        int err;
 
 
        dev_ctl->blocks = dev_blk;
 
-       if (nr_attrib) {
-               dev_attrib = kcalloc(nr_attrib, sizeof(struct edac_dev_sysfs_block_attribute),
-                                    GFP_KERNEL);
-               if (!dev_attrib)
-                       goto free;
-
-               dev_ctl->attribs = dev_attrib;
-       }
-
        if (pvt_sz) {
                pvt = kzalloc(pvt_sz, GFP_KERNEL);
                if (!pvt)
 
                        edac_dbg(4, "instance=%d inst_p=%p block=#%d block_p=%p name='%s'\n",
                                 instance, inst, block, blk, blk->name);
-
-                       /* if there are NO attributes OR no attribute pointer
-                        * then continue on to next block iteration
-                        */
-                       if ((nr_attrib == 0) || (attrib_spec == NULL))
-                               continue;
-
-                       /* setup the attribute array for this block */
-                       blk->nr_attribs = nr_attrib;
-                       attrib_p = &dev_attrib[block*nr_instances*nr_attrib];
-                       blk->block_attributes = attrib_p;
-
-                       edac_dbg(4, "THIS BLOCK_ATTRIB=%p\n",
-                                blk->block_attributes);
-
-                       /* Initialize every user specified attribute in this
-                        * block with the data the caller passed in
-                        * Each block gets its own copy of pointers,
-                        * and its unique 'value'
-                        */
-                       for (attr = 0; attr < nr_attrib; attr++) {
-                               attrib = &attrib_p[attr];
-
-                               /* populate the unique per attrib
-                                * with the code pointers and info
-                                */
-                               attrib->attr = attrib_spec[attr].attr;
-                               attrib->show = attrib_spec[attr].show;
-
-                               edac_dbg(4, "alloc-attrib=%p attrib_name='%s' attrib-spec=%p spec-name=%s\n",
-                                        attrib, attrib->attr.name,
-                                        &attrib_spec[attr],
-                                        attrib_spec[attr].attr.name
-                                       );
-                       }
                }
        }
 
 
        u32 nr_instances;
        struct edac_device_instance *instances;
        struct edac_device_block *blocks;
-       struct edac_dev_sysfs_block_attribute *attribs;
 
        /* Event counters for the this whole EDAC Device */
        struct edac_device_counter counters;
                char *edac_device_name, unsigned nr_instances,
                char *edac_block_name, unsigned nr_blocks,
                unsigned offset_value,
-               struct edac_dev_sysfs_block_attribute *block_attributes,
-               unsigned nr_attribs,
                int device_index);
 
 /* The offset value can be:
 {
        if (ci) {
                kfree(ci->pvt_info);
-               kfree(ci->attribs);
                kfree(ci->blocks);
                kfree(ci->instances);
                kfree(ci);
 
        int res = 0;
 
        dci = edac_device_alloc_ctl_info(sizeof(*drvdata), "cpu",
-               1, "L", 1, 2, NULL, 0, 0);
+                                        1, "L", 1, 2, 0);
        if (!dci)
                return -ENOMEM;
 
 
                return -ENOMEM;
 
        edac_dev = edac_device_alloc_ctl_info(sizeof(*pdata),
-                                             "cpu", 1, "L", 1, 2, NULL, 0,
+                                             "cpu", 1, "L", 1, 2,
                                              edac_dev_idx);
        if (!edac_dev) {
                devres_release_group(&op->dev, mpc85xx_l2_err_probe);
 
 
        /* 'Tags' are block 0, 'Data' is block 1*/
        l2c = edac_device_alloc_ctl_info(0, "l2c", num_tads, "l2c", 2, 0,
-                                        NULL, 0, edac_device_alloc_index());
+                                        edac_device_alloc_index());
        if (!l2c)
                return -ENOMEM;
 
 
        platform_set_drvdata(pdev, p);
 
        p->ed = edac_device_alloc_ctl_info(0, "cpu", num_possible_cpus(),
-                                          "cache", 2, 0, NULL, 0,
+                                          "cache", 2, 0,
                                           edac_device_alloc_index());
        if (!p->ed)
                goto err;
 
        /* Allocate edac control info */
        edev_ctl = edac_device_alloc_ctl_info(0, "qcom-llcc", 1, "bank",
                                              llcc_driv_data->num_banks, 1,
-                                             NULL, 0,
                                              edac_device_alloc_index());
 
        if (!edev_ctl)
 
        platform_set_drvdata(pdev, p);
 
        p->dci = edac_device_alloc_ctl_info(0, "sifive_ecc", 1, "sifive_ecc",
-                                           1, 1, NULL, 0,
-                                           edac_device_alloc_index());
+                                           1, 1, edac_device_alloc_index());
        if (!p->dci)
                return -ENOMEM;
 
 
        idx = edac_device_alloc_index();
        snprintf(name, sizeof(name), "OCX%d", idx);
        edac_dev = edac_device_alloc_ctl_info(sizeof(struct thunderx_ocx),
-                                             name, 1, "CCPI", 1,
-                                             0, NULL, 0, idx);
+                                             name, 1, "CCPI", 1, 0, idx);
        if (!edac_dev) {
                dev_err(&pdev->dev, "Cannot allocate EDAC device\n");
                return -ENOMEM;
        snprintf(name, sizeof(name), fmt, idx);
 
        edac_dev = edac_device_alloc_ctl_info(sizeof(struct thunderx_l2c),
-                                             name, 1, "L2C", 1, 0,
-                                             NULL, 0, idx);
+                                             name, 1, "L2C", 1, 0, idx);
        if (!edac_dev) {
                dev_err(&pdev->dev, "Cannot allocate EDAC device\n");
                return -ENOMEM;
 
 
        snprintf(edac_name, sizeof(edac_name), "l2c%d", pmd);
        edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
-                                             edac_name, 1, "l2c", 1, 2, NULL,
-                                             0, edac_device_alloc_index());
+                                             edac_name, 1, "l2c", 1, 2,
+                                             edac_device_alloc_index());
        if (!edac_dev) {
                rc = -ENOMEM;
                goto err_group;
 
        edac_idx = edac_device_alloc_index();
        edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
-                                             "l3c", 1, "l3c", 1, 0, NULL, 0,
-                                             edac_idx);
+                                             "l3c", 1, "l3c", 1, 0, edac_idx);
        if (!edac_dev) {
                rc = -ENOMEM;
                goto err_release_group;
 
        edac_idx = edac_device_alloc_index();
        edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
-                                             "SOC", 1, "SOC", 1, 2, NULL, 0,
-                                             edac_idx);
+                                             "SOC", 1, "SOC", 1, 2, edac_idx);
        if (!edac_dev) {
                rc = -ENOMEM;
                goto err_release_group;
 
        }
 
        dci = edac_device_alloc_ctl_info(sizeof(*priv), ZYNQMP_OCM_EDAC_STRING,
-                                        1, ZYNQMP_OCM_EDAC_STRING, 1, 0, NULL, 0,
+                                        1, ZYNQMP_OCM_EDAC_STRING, 1, 0,
                                         edac_device_alloc_index());
        if (!dci)
                return -ENOMEM;