Lines Matching refs:adev
59 static int pl172_timing_prop(struct amba_device *adev, in pl172_timing_prop() argument
63 struct pl172_data *pl172 = amba_get_drvdata(adev); in pl172_timing_prop()
72 dev_err(&adev->dev, "%s timing too tight\n", name); in pl172_timing_prop()
79 dev_dbg(&adev->dev, "%s: %u cycle(s)\n", name, start + in pl172_timing_prop()
85 static int pl172_setup_static(struct amba_device *adev, in pl172_setup_static() argument
88 struct pl172_data *pl172 = amba_get_drvdata(adev); in pl172_setup_static()
101 dev_err(&adev->dev, "invalid memory width cs%u\n", cs); in pl172_setup_static()
105 dev_err(&adev->dev, "memory-width property required\n"); in pl172_setup_static()
121 if (amba_part(adev) == 0x172 && in pl172_setup_static()
129 dev_dbg(&adev->dev, "mpmc static config cs%u: 0x%08x\n", cs, cfg); in pl172_setup_static()
132 ret = pl172_timing_prop(adev, np, "mpmc,write-enable-delay", in pl172_setup_static()
138 ret = pl172_timing_prop(adev, np, "mpmc,output-enable-delay", in pl172_setup_static()
144 ret = pl172_timing_prop(adev, np, "mpmc,read-access-delay", in pl172_setup_static()
150 ret = pl172_timing_prop(adev, np, "mpmc,page-mode-read-delay", in pl172_setup_static()
156 ret = pl172_timing_prop(adev, np, "mpmc,write-access-delay", in pl172_setup_static()
162 ret = pl172_timing_prop(adev, np, "mpmc,turn-round-delay", in pl172_setup_static()
170 dev_err(&adev->dev, "failed to configure cs%u\n", cs); in pl172_setup_static()
174 static int pl172_parse_cs_config(struct amba_device *adev, in pl172_parse_cs_config() argument
181 dev_err(&adev->dev, "cs%u invalid\n", cs); in pl172_parse_cs_config()
185 return pl172_setup_static(adev, np, cs); in pl172_parse_cs_config()
188 dev_err(&adev->dev, "cs property required\n"); in pl172_parse_cs_config()
197 static int pl172_probe(struct amba_device *adev, const struct amba_id *id) in pl172_probe() argument
199 struct device_node *child_np, *np = adev->dev.of_node; in pl172_probe()
200 struct device *dev = &adev->dev; in pl172_probe()
205 if (amba_part(adev) == 0x172) { in pl172_probe()
206 if (amba_rev(adev) < ARRAY_SIZE(pl172_revisions)) in pl172_probe()
207 rev = pl172_revisions[amba_rev(adev)]; in pl172_probe()
208 } else if (amba_part(adev) == 0x175) { in pl172_probe()
209 if (amba_rev(adev) < ARRAY_SIZE(pl175_revisions)) in pl172_probe()
210 rev = pl175_revisions[amba_rev(adev)]; in pl172_probe()
211 } else if (amba_part(adev) == 0x176) { in pl172_probe()
212 if (amba_rev(adev) < ARRAY_SIZE(pl176_revisions)) in pl172_probe()
213 rev = pl176_revisions[amba_rev(adev)]; in pl172_probe()
216 dev_info(dev, "ARM PL%x revision %s\n", amba_part(adev), rev); in pl172_probe()
241 ret = amba_request_regions(adev, NULL); in pl172_probe()
247 pl172->base = devm_ioremap(dev, adev->res.start, in pl172_probe()
248 resource_size(&adev->res)); in pl172_probe()
255 amba_set_drvdata(adev, pl172); in pl172_probe()
263 ret = pl172_parse_cs_config(adev, child_np); in pl172_probe()
273 amba_release_regions(adev); in pl172_probe()
279 static int pl172_remove(struct amba_device *adev) in pl172_remove() argument
281 struct pl172_data *pl172 = amba_get_drvdata(adev); in pl172_remove()
284 amba_release_regions(adev); in pl172_remove()