u32 gcnt;
unsigned long flags;
- struct fuse_corner *fuse_corners;
struct corner *corners;
const struct cpr_desc *desc;
const struct cpr_fuse *cpr_fuses;
struct dentry *debugfs;
+
+ struct fuse_corner fuse_corners[];
};
static bool cpr_is_allowed(struct cpr_drv *drv)
if (!data || !data->cpr_desc || !data->acc_desc)
return -EINVAL;
- drv = devm_kzalloc(dev, sizeof(*drv), GFP_KERNEL);
+ drv = devm_kzalloc(dev,
+ struct_size(drv, fuse_corners, data->cpr_desc->num_fuse_corners),
+ GFP_KERNEL);
if (!drv)
return -ENOMEM;
drv->dev = dev;
drv->desc = data->cpr_desc;
drv->acc_desc = data->acc_desc;
- drv->fuse_corners = devm_kcalloc(dev, drv->desc->num_fuse_corners,
- sizeof(*drv->fuse_corners),
- GFP_KERNEL);
- if (!drv->fuse_corners)
- return -ENOMEM;
-
np = of_parse_phandle(dev->of_node, "acc-syscon", 0);
if (!np)
return -ENODEV;