Message ID | 001601cc5be9$275a5200$760ef600$%kim@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Aug 16, 2011 at 9:50 AM, Boojin Kim <boojin.kim@samsung.com> wrote: > diff --git a/arch/arm/common/pl330.c b/arch/arm/common/pl330.c > index 2b3b8b3..af6d96d 100644 > --- a/arch/arm/common/pl330.c > +++ b/arch/arm/common/pl330.c > @@ -1822,6 +1822,8 @@ int pl330_add(struct pl330_info *pi) > struct pl330_dmac *pl330; > int i, ret; > u32 cid, pid; > + struct amba_device *adev = container_of(pi->dev, > + struct amba_device, dev); > > if (!pi || !pi->dev) > return -EINVAL; > @@ -1841,8 +1843,8 @@ int pl330_add(struct pl330_info *pi) > cid = amba_get_cid(pi->base, PCELL_SIZE); > pid = amba_get_pid(pi->base, PCELL_SIZE); > if (cid != AMBA_CID || > - amba_manf(pid) != AMBA_VENDOR_ARM || > - amba_part(pid) != PART) { > + amba_manf(adev) != AMBA_VENDOR_ARM || > + amba_part(adev) != PART) { > dev_err(pi->dev, "PID: 0x%x, CID: 0x%x !\n", pid, cid); > return -EINVAL; > } Ah! If I can access the adev from here it must have probed earlier, and then the entire check is superfluous, since the AMBA probe has already checked this in drivers/amba/bus.c. I guess it should just be deleted then? Linus
2011/8/16 Boojin Kim <boojin.kim@samsung.com>: > Actually, I tested this patch after applying my patches that uses > 'dma-pl330' driver instead of the samsung specific 's3c-pl330' driver. > 'dma-pl330' driver is registered as 'amba_device'. So, this has already > checked on 'drivers/amba/bus.c' as your notice. > But, 's3c-pl330' driver is registered as 'platform_device'. So, This check > is required. > In my opinion, This check can be deleted if caller device is registered as > 'amba_device'. My latest (v2) version of the patch deletes the check. But doing that is dependent on the s3c-pl330 going away and being replaced by the dmaengine driver, else I think we shall try to keep the check (I will have to make it work without dereferencing the amba_device or it will break). Is it your plan to replace s3c-pl330 with the drivers/dma/pl330.c driver, so I can safely delete this code? Thanks, Linus Walleij
Linus Walleij wrote: > > Actually, I tested this patch after applying my patches that uses > > 'dma-pl330' driver instead of the samsung specific 's3c-pl330' > driver. > > 'dma-pl330' driver is registered as 'amba_device'. So, this has > already > > checked on 'drivers/amba/bus.c' as your notice. > > But, 's3c-pl330' driver is registered as 'platform_device'. So, This > check > > is required. > > In my opinion, This check can be deleted if caller device is > registered as > > 'amba_device'. > > My latest (v2) version of the patch deletes the check. > > But doing that is dependent on the s3c-pl330 going away and > being replaced by the dmaengine driver, else I think we shall try to > keep the check (I will have to make it work without > dereferencing the amba_device or it will break). > > Is it your plan to replace s3c-pl330 with the drivers/dma/pl330.c > driver, so I can safely delete this code? > > Thanks, > Linus Walleij Yes, I made some patches that replaces s3c-pl330 with dma-pl330. And they are waiting to merge mainline. So, You can remove this code because the patches are forecasted to merge soon. Thanks, Boojin Kim
diff --git a/arch/arm/common/pl330.c b/arch/arm/common/pl330.c index 2b3b8b3..af6d96d 100644 --- a/arch/arm/common/pl330.c +++ b/arch/arm/common/pl330.c @@ -1822,6 +1822,8 @@ int pl330_add(struct pl330_info *pi) struct pl330_dmac *pl330; int i, ret; u32 cid, pid; + struct amba_device *adev = container_of(pi->dev, + struct amba_device, dev); if (!pi || !pi->dev) return -EINVAL; @@ -1841,8 +1843,8 @@ int pl330_add(struct pl330_info *pi) cid = amba_get_cid(pi->base, PCELL_SIZE); pid = amba_get_pid(pi->base, PCELL_SIZE); if (cid != AMBA_CID || - amba_manf(pid) != AMBA_VENDOR_ARM || - amba_part(pid) != PART) { + amba_manf(adev) != AMBA_VENDOR_ARM || + amba_part(adev) != PART) { dev_err(pi->dev, "PID: 0x%x, CID: 0x%x !\n", pid, cid); return -EINVAL; }