Re: [PATCH 2/2] pwm: add this series patch to support for rk-pwm and vop-pwm.

From: caesar
Date: Fri Jul 18 2014 - 07:04:41 EST


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 linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/