Hi Thierry,
于 2014年07月18日 18:03, Thierry Reding 写道:
On Fri, Jul 18, 2014 at 01:05:56PM +0800, caesar wrote:
于 2014年07月18日 03:24, Beniamino Galvani 写道:
On Thu, Jul 17, 2014 at 02:08:14PM +0800, caesar wrote:
[...]
@@ -119,9 +185,12 @@ static int rockchip_pwm_probe(struct platform_device *pdev)
return -ENOMEM;
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- pc->base = devm_ioremap_resource(&pdev->dev, r);
- if (IS_ERR(pc->base))
- return PTR_ERR(pc->base);
+ pc->base = of_iomap(np, 0);
+ if (!pc->base) {
+ dev_err(&pdev->dev, "failed to map controller\n");
+ ret = -ENOMEM;
+ goto fail_map;
+ }
I think that this change is not needed. devm_ioremap_resource()
guarantees an automatic unmapping when the device is destroyed.
Moreover, when of_iomap() fails you don't need to call iounmap().
Beniamino
VOP-PWM base has be requested for lcdc.
Why?
VOP is a seperate controllers for rk3288 and genenation SoCs.
The VOP contains lcdc,pwm......
For example :Rk3288 SOC address mapping
lcdc0: lcdc@ff930000 vop0pwm: pwm@ff9301a0
reg = <0xff930000 0x10000> reg = <0xff9301a0 0x10>;
offset = 0x10000 offset = 0x10
lcdc1: lcdc@ff940000 vop1pwm: pwm@ff9401a0
reg = <0xff940000 0x10000> reg = <0xff9401a0 0x10>;
offset = 0x10000 offset = 0x10
In a word, lcdc and vop-pwm has shared the map address.
When I use devm_ioremap_resource(), the vop-pwm will request region fail.
Example:.931020] rockchip-pwm ff9401a0.pwm: can't request region for
resource [mem 0xff9401a0-0xff9401af] /pwm@ff9401a0.
So ,I have to charge it.
I will be simplyfied by having:
- pc->base = devm_ioremap_resource(&pdev->dev, r);
+ if (!strcmp(of_id->compatible, "rockchip,vop-pwm"))
+ pc->base = devm_ioremap(&pdev->dev, r->start, resource_size(r));
+ else
+ pc->base = devm_ioremap_resource(&pdev->dev, r);
Maybe, Could you give me better suggestions for it?
The right thing to do is not have two drivers access the same device.
Why does lcdc request the PWM register region?
Thierry
Ditto,
Maybe,Could you give me a better suggestion to do it?
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html