Lines Matching refs:l2

77 static int l2_ctl_get_latency(struct l2_ctl *l2, enum l2_ctl_stall id, u32 *val)
82 ret = regmap_read(l2->sys_regs, L2_CTL_REG, &data);
103 static int l2_ctl_set_latency(struct l2_ctl *l2, enum l2_ctl_stall id, u32 val)
130 ret = regmap_update_bits(l2->sys_regs, L2_CTL_REG, mask, data);
134 return regmap_read_poll_timeout(l2->sys_regs, L2_CTL_REG, data,
142 struct l2_ctl *l2 = data;
143 struct platform_device *pdev = to_platform_device(l2->dev);
151 struct l2_ctl *l2;
154 l2 = devm_kzalloc(dev, sizeof(*l2), GFP_KERNEL);
155 if (!l2)
158 ret = devm_add_action(dev, l2_ctl_clear_data, l2);
164 l2->dev = dev;
165 platform_set_drvdata(pdev, l2);
167 return l2;
170 static int l2_ctl_find_sys_regs(struct l2_ctl *l2)
172 l2->sys_regs = syscon_node_to_regmap(l2->dev->of_node->parent);
173 if (IS_ERR(l2->sys_regs)) {
174 dev_err(l2->dev, "Couldn't get L2 CTL register map\n");
175 return PTR_ERR(l2->sys_regs);
181 static int l2_ctl_of_parse_property(struct l2_ctl *l2, enum l2_ctl_stall id,
187 if (!of_property_read_u32(l2->dev->of_node, propname, &data)) {
188 ret = l2_ctl_set_latency(l2, id, data);
190 dev_err(l2->dev, "Invalid value of '%s'\n", propname);
196 static int l2_ctl_of_parse(struct l2_ctl *l2)
200 ret = l2_ctl_of_parse_property(l2, L2_WS_STALL, "baikal,l2-ws-latency");
204 ret = l2_ctl_of_parse_property(l2, L2_TAG_STALL, "baikal,l2-tag-latency");
208 return l2_ctl_of_parse_property(l2, L2_DATA_STALL,
209 "baikal,l2-data-latency");
217 struct l2_ctl *l2 = dev_get_drvdata(dev);
221 ret = l2_ctl_get_latency(l2, devattr->id, &data);
233 struct l2_ctl *l2 = dev_get_drvdata(dev);
240 ret = l2_ctl_set_latency(l2, devattr->id, data);
261 struct l2_ctl *l2 = data;
263 device_remove_groups(l2->dev, l2_ctl_sysfs_groups);
266 static int l2_ctl_init_sysfs(struct l2_ctl *l2)
270 ret = device_add_groups(l2->dev, l2_ctl_sysfs_groups);
272 dev_err(l2->dev, "Failed to create L2 CTL sysfs nodes\n");
276 ret = devm_add_action_or_reset(l2->dev, l2_ctl_remove_sysfs, l2);
278 dev_err(l2->dev, "Can't add L2 CTL sysfs remove action\n");
285 struct l2_ctl *l2;
288 l2 = l2_ctl_create_data(pdev);
289 if (IS_ERR(l2))
290 return PTR_ERR(l2);
292 ret = l2_ctl_find_sys_regs(l2);
296 ret = l2_ctl_of_parse(l2);
300 ret = l2_ctl_init_sysfs(l2);
308 { .compatible = "baikal,bt1-l2-ctl" },
316 .name = "bt1-l2-ctl",