Skip to content

Commit e4272af

Browse files
vijaykhemkashenki
authored andcommitted
soc: aspeed: lpc-ctrl: make parameter optional
Making memory-region and flash as optional parameter in device tree if user needs to use these parameter through ioctl then need to define in devicetree. Signed-off-by: Vijay Khemka <[email protected]> Reviewed-by: Andrew Jeffery <[email protected]> Signed-off-by: Joel Stanley <[email protected]>
1 parent a188339 commit e4272af

File tree

1 file changed

+36
-22
lines changed

1 file changed

+36
-22
lines changed

drivers/soc/aspeed/aspeed-lpc-ctrl.c

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
6868
unsigned long param)
6969
{
7070
struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(file);
71+
struct device *dev = file->private_data;
7172
void __user *p = (void __user *)param;
7273
struct aspeed_lpc_ctrl_mapping map;
7374
u32 addr;
@@ -90,6 +91,12 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
9091
if (map.window_id != 0)
9192
return -EINVAL;
9293

94+
/* If memory-region is not described in device tree */
95+
if (!lpc_ctrl->mem_size) {
96+
dev_dbg(dev, "Didn't find reserved memory\n");
97+
return -ENXIO;
98+
}
99+
93100
map.size = lpc_ctrl->mem_size;
94101

95102
return copy_to_user(p, &map, sizeof(map)) ? -EFAULT : 0;
@@ -126,9 +133,18 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
126133
return -EINVAL;
127134

128135
if (map.window_type == ASPEED_LPC_CTRL_WINDOW_FLASH) {
136+
if (!lpc_ctrl->pnor_size) {
137+
dev_dbg(dev, "Didn't find host pnor flash\n");
138+
return -ENXIO;
139+
}
129140
addr = lpc_ctrl->pnor_base;
130141
size = lpc_ctrl->pnor_size;
131142
} else if (map.window_type == ASPEED_LPC_CTRL_WINDOW_MEMORY) {
143+
/* If memory-region is not described in device tree */
144+
if (!lpc_ctrl->mem_size) {
145+
dev_dbg(dev, "Didn't find reserved memory\n");
146+
return -ENXIO;
147+
}
132148
addr = lpc_ctrl->mem_base;
133149
size = lpc_ctrl->mem_size;
134150
} else {
@@ -196,40 +212,40 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
196212
if (!lpc_ctrl)
197213
return -ENOMEM;
198214

215+
/* If flash is described in device tree then store */
199216
node = of_parse_phandle(dev->of_node, "flash", 0);
200217
if (!node) {
201-
dev_err(dev, "Didn't find host pnor flash node\n");
202-
return -ENODEV;
203-
}
204-
205-
rc = of_address_to_resource(node, 1, &resm);
206-
of_node_put(node);
207-
if (rc) {
208-
dev_err(dev, "Couldn't address to resource for flash\n");
209-
return rc;
218+
dev_dbg(dev, "Didn't find host pnor flash node\n");
219+
} else {
220+
rc = of_address_to_resource(node, 1, &resm);
221+
of_node_put(node);
222+
if (rc) {
223+
dev_err(dev, "Couldn't address to resource for flash\n");
224+
return rc;
225+
}
210226
}
211227

212228
lpc_ctrl->pnor_size = resource_size(&resm);
213229
lpc_ctrl->pnor_base = resm.start;
214230

215231
dev_set_drvdata(&pdev->dev, lpc_ctrl);
216232

233+
/* If memory-region is described in device tree then store */
217234
node = of_parse_phandle(dev->of_node, "memory-region", 0);
218235
if (!node) {
219-
dev_err(dev, "Didn't find reserved memory\n");
220-
return -EINVAL;
221-
}
236+
dev_dbg(dev, "Didn't find reserved memory\n");
237+
} else {
238+
rc = of_address_to_resource(node, 0, &resm);
239+
of_node_put(node);
240+
if (rc) {
241+
dev_err(dev, "Couldn't address to resource for reserved memory\n");
242+
return -ENXIO;
243+
}
222244

223-
rc = of_address_to_resource(node, 0, &resm);
224-
of_node_put(node);
225-
if (rc) {
226-
dev_err(dev, "Couldn't address to resource for reserved memory\n");
227-
return -ENOMEM;
245+
lpc_ctrl->mem_size = resource_size(&resm);
246+
lpc_ctrl->mem_base = resm.start;
228247
}
229248

230-
lpc_ctrl->mem_size = resource_size(&resm);
231-
lpc_ctrl->mem_base = resm.start;
232-
233249
lpc_ctrl->regmap = syscon_node_to_regmap(
234250
pdev->dev.parent->of_node);
235251
if (IS_ERR(lpc_ctrl->regmap)) {
@@ -258,8 +274,6 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
258274
goto err;
259275
}
260276

261-
dev_info(dev, "Loaded at %pr\n", &resm);
262-
263277
return 0;
264278

265279
err:

0 commit comments

Comments
 (0)