|
@@ -580,6 +580,24 @@ int s3c_i2sv2_probe(struct platform_device *pdev,
|
|
|
/* record our i2s structure for later use in the callbacks */
|
|
|
dai->private_data = i2s;
|
|
|
|
|
|
+ if (!base) {
|
|
|
+ struct resource *res = platform_get_resource(pdev,
|
|
|
+ IORESOURCE_MEM,
|
|
|
+ 0);
|
|
|
+ if (!res) {
|
|
|
+ dev_err(dev, "Unable to get register resource\n");
|
|
|
+ return -ENXIO;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!request_mem_region(res->start, resource_size(res),
|
|
|
+ "s3c64xx-i2s-v4")) {
|
|
|
+ dev_err(dev, "Unable to request register region\n");
|
|
|
+ return -EBUSY;
|
|
|
+ }
|
|
|
+
|
|
|
+ base = res->start;
|
|
|
+ }
|
|
|
+
|
|
|
i2s->regs = ioremap(base, 0x100);
|
|
|
if (i2s->regs == NULL) {
|
|
|
dev_err(dev, "cannot ioremap registers\n");
|