* [PATCH 0/3] driver core: Add ability for arch code to setup pdev_archdata @ 2010-08-05 15:15 Kumar Gala 2010-08-05 15:15 ` [PATCH 1/3] " Kumar Gala 0 siblings, 1 reply; 9+ messages in thread From: Kumar Gala @ 2010-08-05 15:15 UTC (permalink / raw) To: gregkh; +Cc: linuxppc-dev, akpm, linux-kernel On PPC we need to set the dma_mask pointer for platform_devices to point to the pdev_archdata. We can't wait for a bus_notifier as we need the dma_mask setup before the platform_device_add happens so that the bus_notifiers can check the dma_mask to determine if we need things like the SWIOTLB dma_ops. The patch series introduces an arch specific call out (arch_setup_pdev_archdata) and provide an implementation on PPC to handle our specific issue. - k ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata 2010-08-05 15:15 [PATCH 0/3] driver core: Add ability for arch code to setup pdev_archdata Kumar Gala @ 2010-08-05 15:15 ` Kumar Gala 2010-08-05 15:15 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Kumar Gala 2010-08-05 15:43 ` [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata Stephen Rothwell 0 siblings, 2 replies; 9+ messages in thread From: Kumar Gala @ 2010-08-05 15:15 UTC (permalink / raw) To: gregkh; +Cc: linuxppc-dev, akpm, linux-kernel On some architectures we need to setup pdev_archdata before we add the device. Waiting til a bus_notifier is too late since we might need the pdev_archdata in the bus notifier. One example is setting up of dma_mask pointers such that it can be used in a bus_notifier. We add ARCH_HAS_PDEV_ARCHDATA_SETUP and a dummy <asm/platform_device.h> header to allow the arch code to have an inline implementation of arch_setup_pdev_archdata() and being able to access the full definitions of struct device, struct platform_device, and struct pdev_archdata. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- arch/alpha/include/asm/platform_device.h | 1 + arch/arm/include/asm/platform_device.h | 1 + arch/avr32/include/asm/platform_device.h | 1 + arch/blackfin/include/asm/platform_device.h | 1 + arch/cris/include/asm/platform_device.h | 1 + arch/frv/include/asm/platform_device.h | 1 + arch/h8300/include/asm/platform_device.h | 1 + arch/ia64/include/asm/platform_device.h | 1 + arch/m32r/include/asm/platform_device.h | 1 + arch/m68k/include/asm/platform_device.h | 1 + arch/microblaze/include/asm/platform_device.h | 1 + arch/mips/include/asm/platform_device.h | 1 + arch/mn10300/include/asm/platform_device.h | 1 + arch/parisc/include/asm/platform_device.h | 1 + arch/powerpc/include/asm/platform_device.h | 1 + arch/s390/include/asm/platform_device.h | 1 + arch/score/include/asm/platform_device.h | 1 + arch/sh/include/asm/platform_device.h | 1 + arch/sparc/include/asm/platform_device.h | 1 + arch/x86/include/asm/platform_device.h | 1 + arch/xtensa/include/asm/platform_device.h | 1 + drivers/base/platform.c | 4 ++++ include/asm-generic/platform_device.h | 7 +++++++ 23 files changed, 32 insertions(+), 0 deletions(-) create mode 100644 arch/alpha/include/asm/platform_device.h create mode 100644 arch/arm/include/asm/platform_device.h create mode 100644 arch/avr32/include/asm/platform_device.h create mode 100644 arch/blackfin/include/asm/platform_device.h create mode 100644 arch/cris/include/asm/platform_device.h create mode 100644 arch/frv/include/asm/platform_device.h create mode 100644 arch/h8300/include/asm/platform_device.h create mode 100644 arch/ia64/include/asm/platform_device.h create mode 100644 arch/m32r/include/asm/platform_device.h create mode 100644 arch/m68k/include/asm/platform_device.h create mode 100644 arch/microblaze/include/asm/platform_device.h create mode 100644 arch/mips/include/asm/platform_device.h create mode 100644 arch/mn10300/include/asm/platform_device.h create mode 100644 arch/parisc/include/asm/platform_device.h create mode 100644 arch/powerpc/include/asm/platform_device.h create mode 100644 arch/s390/include/asm/platform_device.h create mode 100644 arch/score/include/asm/platform_device.h create mode 100644 arch/sh/include/asm/platform_device.h create mode 100644 arch/sparc/include/asm/platform_device.h create mode 100644 arch/x86/include/asm/platform_device.h create mode 100644 arch/xtensa/include/asm/platform_device.h create mode 100644 include/asm-generic/platform_device.h diff --git a/arch/alpha/include/asm/platform_device.h b/arch/alpha/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/alpha/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/arm/include/asm/platform_device.h b/arch/arm/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/arm/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/avr32/include/asm/platform_device.h b/arch/avr32/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/avr32/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/blackfin/include/asm/platform_device.h b/arch/blackfin/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/blackfin/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/cris/include/asm/platform_device.h b/arch/cris/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/cris/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/frv/include/asm/platform_device.h b/arch/frv/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/frv/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/h8300/include/asm/platform_device.h b/arch/h8300/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/h8300/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/ia64/include/asm/platform_device.h b/arch/ia64/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/ia64/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/m32r/include/asm/platform_device.h b/arch/m32r/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/m32r/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/m68k/include/asm/platform_device.h b/arch/m68k/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/m68k/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/microblaze/include/asm/platform_device.h b/arch/microblaze/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/microblaze/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/mips/include/asm/platform_device.h b/arch/mips/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/mips/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/mn10300/include/asm/platform_device.h b/arch/mn10300/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/mn10300/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/parisc/include/asm/platform_device.h b/arch/parisc/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/parisc/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/powerpc/include/asm/platform_device.h b/arch/powerpc/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/powerpc/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/s390/include/asm/platform_device.h b/arch/s390/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/s390/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/score/include/asm/platform_device.h b/arch/score/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/score/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/sh/include/asm/platform_device.h b/arch/sh/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/sh/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/sparc/include/asm/platform_device.h b/arch/sparc/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/sparc/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/x86/include/asm/platform_device.h b/arch/x86/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/x86/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/arch/xtensa/include/asm/platform_device.h b/arch/xtensa/include/asm/platform_device.h new file mode 100644 index 0000000..01452c3 --- /dev/null +++ b/arch/xtensa/include/asm/platform_device.h @@ -0,0 +1 @@ +#include <asm-generic/platform_device.h> diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 4d99c8b..165b454 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -19,6 +19,7 @@ #include <linux/err.h> #include <linux/slab.h> #include <linux/pm_runtime.h> +#include <asm/platform_device.h> #include "base.h" @@ -170,6 +171,9 @@ struct platform_device *platform_device_alloc(const char *name, int id) pa->pdev.id = id; device_initialize(&pa->pdev.dev); pa->pdev.dev.release = platform_device_release; +#ifdef ARCH_HAS_PDEV_ARCHDATA_SETUP + arch_setup_pdev_archdata(&pa->pdev); +#endif } return pa ? &pa->pdev : NULL; diff --git a/include/asm-generic/platform_device.h b/include/asm-generic/platform_device.h new file mode 100644 index 0000000..64806dc --- /dev/null +++ b/include/asm-generic/platform_device.h @@ -0,0 +1,7 @@ +#ifndef __ASM_GENERIC_PLATFORM_DEVICE_H_ +#define __ASM_GENERIC_PLATFORM_DEVICE_H_ +/* + * an architecture can override to define arch_setup_pdev_archdata + */ + +#endif /* __ASM_GENERIC_PLATFORM_DEVICE_H_ */ -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata 2010-08-05 15:15 ` [PATCH 1/3] " Kumar Gala @ 2010-08-05 15:15 ` Kumar Gala 2010-08-05 15:15 ` [PATCH 3/3] powerpc: Dont require a dma_ops struct to set dma mask Kumar Gala 2010-08-05 15:44 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Stephen Rothwell 2010-08-05 15:43 ` [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata Stephen Rothwell 1 sibling, 2 replies; 9+ messages in thread From: Kumar Gala @ 2010-08-05 15:15 UTC (permalink / raw) To: gregkh; +Cc: linuxppc-dev, akpm, linux-kernel We have a long standing issues with platform devices not have a valid dma_mask pointer. This hasn't been an issue to date as no platform device has tried to set its dma_mask value to a non-default value. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- arch/powerpc/include/asm/platform_device.h | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/include/asm/platform_device.h b/arch/powerpc/include/asm/platform_device.h index 01452c3..a379500 100644 --- a/arch/powerpc/include/asm/platform_device.h +++ b/arch/powerpc/include/asm/platform_device.h @@ -1 +1,15 @@ -#include <asm-generic/platform_device.h> +#ifndef __ASM_PLATFORM_DEVICE_H_ +#define __ASM_PLATFORM_DEVICE_H_ + +#include <linux/platform_device.h> + +#define ARCH_HAS_PDEV_ARCHDATA_SETUP + +static inline void arch_setup_pdev_archdata(struct platform_device *pdev) +{ + pdev->dev.dma_mask = &pdev->archdata.dma_mask; + + return; +} + +#endif /* __ASM_GENERIC_PLATFORM_DEVICE_H_ */ -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] powerpc: Dont require a dma_ops struct to set dma mask 2010-08-05 15:15 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Kumar Gala @ 2010-08-05 15:15 ` Kumar Gala 2010-08-05 15:44 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Stephen Rothwell 1 sibling, 0 replies; 9+ messages in thread From: Kumar Gala @ 2010-08-05 15:15 UTC (permalink / raw) To: gregkh; +Cc: linuxppc-dev, akpm, linux-kernel The only reason to require a dma_ops struct is to see if it has implemented set_dma_mask. If not we can fall back to setting the mask directly. This resolves an issue with how to sequence the setting of a DMA mask for platform devices. Before we had an issue in that we have no way of setting the DMA mask before the various low level bus notifiers get called that might check it (swiotlb). So now we can do: pdev = platform_device_alloc("foobar", 0); dma_set_mask(&pdev->dev, DMA_BIT_MASK(37)); platform_device_register(pdev); And expect the right thing to happen with the bus notifiers get called via platform_device_register. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- arch/powerpc/include/asm/dma-mapping.h | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h index c85ef23..952208a 100644 --- a/arch/powerpc/include/asm/dma-mapping.h +++ b/arch/powerpc/include/asm/dma-mapping.h @@ -131,12 +131,10 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask) { struct dma_map_ops *dma_ops = get_dma_ops(dev); - if (unlikely(dma_ops == NULL)) - return -EIO; - if (dma_ops->set_dma_mask != NULL) - return dma_ops->set_dma_mask(dev, dma_mask); if (!dev->dma_mask || !dma_supported(dev, dma_mask)) return -EIO; + if (dma_ops && (dma_ops->set_dma_mask != NULL)) + return dma_ops->set_dma_mask(dev, dma_mask); *dev->dma_mask = dma_mask; return 0; } -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata 2010-08-05 15:15 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Kumar Gala 2010-08-05 15:15 ` [PATCH 3/3] powerpc: Dont require a dma_ops struct to set dma mask Kumar Gala @ 2010-08-05 15:44 ` Stephen Rothwell 2010-08-05 16:14 ` Kumar Gala 1 sibling, 1 reply; 9+ messages in thread From: Stephen Rothwell @ 2010-08-05 15:44 UTC (permalink / raw) To: Kumar Gala; +Cc: linuxppc-dev, akpm, gregkh, linux-kernel [-- Attachment #1: Type: text/plain, Size: 419 bytes --] Hi Kumar, On Thu, 5 Aug 2010 10:15:46 -0500 Kumar Gala <galak@kernel.crashing.org> wrote: > > +static inline void arch_setup_pdev_archdata(struct platform_device *pdev) > +{ > + pdev->dev.dma_mask = &pdev->archdata.dma_mask; > + > + return; > +} The blank line and "return;" don't add anything. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ [-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata 2010-08-05 15:44 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Stephen Rothwell @ 2010-08-05 16:14 ` Kumar Gala 0 siblings, 0 replies; 9+ messages in thread From: Kumar Gala @ 2010-08-05 16:14 UTC (permalink / raw) To: Stephen Rothwell; +Cc: linuxppc-dev, akpm, gregkh, linux-kernel On Aug 5, 2010, at 10:44 AM, Stephen Rothwell wrote: > Hi Kumar, >=20 > On Thu, 5 Aug 2010 10:15:46 -0500 Kumar Gala = <galak@kernel.crashing.org> wrote: >>=20 >> +static inline void arch_setup_pdev_archdata(struct platform_device = *pdev) >> +{ >> + pdev->dev.dma_mask =3D &pdev->archdata.dma_mask; >> + >> + return; >> +} >=20 > The blank line and "return;" don't add anything. Will fix. - k= ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata 2010-08-05 15:15 ` [PATCH 1/3] " Kumar Gala 2010-08-05 15:15 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Kumar Gala @ 2010-08-05 15:43 ` Stephen Rothwell 2010-08-05 16:14 ` Kumar Gala 2010-08-05 18:02 ` Greg KH 1 sibling, 2 replies; 9+ messages in thread From: Stephen Rothwell @ 2010-08-05 15:43 UTC (permalink / raw) To: Kumar Gala; +Cc: linuxppc-dev, akpm, gregkh, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1757 bytes --] Hi Kumar, On Thu, 5 Aug 2010 10:15:45 -0500 Kumar Gala <galak@kernel.crashing.org> wrote: > > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -19,6 +19,7 @@ > #include <linux/err.h> > #include <linux/slab.h> > #include <linux/pm_runtime.h> > +#include <asm/platform_device.h> > > #include "base.h" > > @@ -170,6 +171,9 @@ struct platform_device *platform_device_alloc(const char *name, int id) > pa->pdev.id = id; > device_initialize(&pa->pdev.dev); > pa->pdev.dev.release = platform_device_release; > +#ifdef ARCH_HAS_PDEV_ARCHDATA_SETUP > + arch_setup_pdev_archdata(&pa->pdev); > +#endif > } > > return pa ? &pa->pdev : NULL; > diff --git a/include/asm-generic/platform_device.h b/include/asm-generic/platform_device.h > new file mode 100644 > index 0000000..64806dc > --- /dev/null > +++ b/include/asm-generic/platform_device.h > @@ -0,0 +1,7 @@ > +#ifndef __ASM_GENERIC_PLATFORM_DEVICE_H_ > +#define __ASM_GENERIC_PLATFORM_DEVICE_H_ > +/* > + * an architecture can override to define arch_setup_pdev_archdata > + */ > + > +#endif /* __ASM_GENERIC_PLATFORM_DEVICE_H_ */ Why not do: #include <linux/platform_device.h> #ifndef arch_setup_pdev_archdata static inline void arch_setup_pdev_archdata(struct platform_device *pdev) { } #endif in asm-generic/platform-device.h and the the call in platform_device_alloc() can be unconditional. If the arch wants to override arch_setup_pdev_archdata, it defines the function and then does #define arch_setup_pdev_archdata arch_setup_pdev_archdata before still including asm-generic/platform_device.h -- Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ [-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata 2010-08-05 15:43 ` [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata Stephen Rothwell @ 2010-08-05 16:14 ` Kumar Gala 2010-08-05 18:02 ` Greg KH 1 sibling, 0 replies; 9+ messages in thread From: Kumar Gala @ 2010-08-05 16:14 UTC (permalink / raw) To: Stephen Rothwell; +Cc: linuxppc-dev, akpm, gregkh, linux-kernel On Aug 5, 2010, at 10:43 AM, Stephen Rothwell wrote: > Hi Kumar, >=20 > On Thu, 5 Aug 2010 10:15:45 -0500 Kumar Gala = <galak@kernel.crashing.org> wrote: >>=20 >> --- a/drivers/base/platform.c >> +++ b/drivers/base/platform.c >> @@ -19,6 +19,7 @@ >> #include <linux/err.h> >> #include <linux/slab.h> >> #include <linux/pm_runtime.h> >> +#include <asm/platform_device.h> >>=20 >> #include "base.h" >>=20 >> @@ -170,6 +171,9 @@ struct platform_device = *platform_device_alloc(const char *name, int id) >> pa->pdev.id =3D id; >> device_initialize(&pa->pdev.dev); >> pa->pdev.dev.release =3D platform_device_release; >> +#ifdef ARCH_HAS_PDEV_ARCHDATA_SETUP >> + arch_setup_pdev_archdata(&pa->pdev); >> +#endif >> } >>=20 >> return pa ? &pa->pdev : NULL; >> diff --git a/include/asm-generic/platform_device.h = b/include/asm-generic/platform_device.h >> new file mode 100644 >> index 0000000..64806dc >> --- /dev/null >> +++ b/include/asm-generic/platform_device.h >> @@ -0,0 +1,7 @@ >> +#ifndef __ASM_GENERIC_PLATFORM_DEVICE_H_ >> +#define __ASM_GENERIC_PLATFORM_DEVICE_H_ >> +/* >> + * an architecture can override to define arch_setup_pdev_archdata >> + */ >> + >> +#endif /* __ASM_GENERIC_PLATFORM_DEVICE_H_ */ >=20 > Why not do: >=20 > #include <linux/platform_device.h> >=20 > #ifndef arch_setup_pdev_archdata > static inline void arch_setup_pdev_archdata(struct platform_device = *pdev) { } > #endif >=20 > in asm-generic/platform-device.h >=20 > and the the call in platform_device_alloc() can be unconditional. If = the arch wants to override arch_setup_pdev_archdata, it defines the = function and then does >=20 > #define arch_setup_pdev_archdata arch_setup_pdev_archdata >=20 > before still including asm-generic/platform_device.h I've got no issues with the style change. - k= ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata 2010-08-05 15:43 ` [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata Stephen Rothwell 2010-08-05 16:14 ` Kumar Gala @ 2010-08-05 18:02 ` Greg KH 1 sibling, 0 replies; 9+ messages in thread From: Greg KH @ 2010-08-05 18:02 UTC (permalink / raw) To: Stephen Rothwell; +Cc: linuxppc-dev, akpm, linux-kernel On Fri, Aug 06, 2010 at 01:43:51AM +1000, Stephen Rothwell wrote: > Hi Kumar, > > On Thu, 5 Aug 2010 10:15:45 -0500 Kumar Gala <galak@kernel.crashing.org> wrote: > > > > --- a/drivers/base/platform.c > > +++ b/drivers/base/platform.c > > @@ -19,6 +19,7 @@ > > #include <linux/err.h> > > #include <linux/slab.h> > > #include <linux/pm_runtime.h> > > +#include <asm/platform_device.h> > > > > #include "base.h" > > > > @@ -170,6 +171,9 @@ struct platform_device *platform_device_alloc(const char *name, int id) > > pa->pdev.id = id; > > device_initialize(&pa->pdev.dev); > > pa->pdev.dev.release = platform_device_release; > > +#ifdef ARCH_HAS_PDEV_ARCHDATA_SETUP > > + arch_setup_pdev_archdata(&pa->pdev); > > +#endif > > } > > > > return pa ? &pa->pdev : NULL; > > diff --git a/include/asm-generic/platform_device.h b/include/asm-generic/platform_device.h > > new file mode 100644 > > index 0000000..64806dc > > --- /dev/null > > +++ b/include/asm-generic/platform_device.h > > @@ -0,0 +1,7 @@ > > +#ifndef __ASM_GENERIC_PLATFORM_DEVICE_H_ > > +#define __ASM_GENERIC_PLATFORM_DEVICE_H_ > > +/* > > + * an architecture can override to define arch_setup_pdev_archdata > > + */ > > + > > +#endif /* __ASM_GENERIC_PLATFORM_DEVICE_H_ */ > > Why not do: > > #include <linux/platform_device.h> > > #ifndef arch_setup_pdev_archdata > static inline void arch_setup_pdev_archdata(struct platform_device *pdev) { } > #endif > > in asm-generic/platform-device.h > > and the the call in platform_device_alloc() can be unconditional. If the arch wants to override arch_setup_pdev_archdata, it defines the function and then does > > #define arch_setup_pdev_archdata arch_setup_pdev_archdata > > before still including asm-generic/platform_device.h Yes, I'd prefer that method as well. thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2010-08-05 18:05 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-08-05 15:15 [PATCH 0/3] driver core: Add ability for arch code to setup pdev_archdata Kumar Gala 2010-08-05 15:15 ` [PATCH 1/3] " Kumar Gala 2010-08-05 15:15 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Kumar Gala 2010-08-05 15:15 ` [PATCH 3/3] powerpc: Dont require a dma_ops struct to set dma mask Kumar Gala 2010-08-05 15:44 ` [PATCH 2/3] powerpc: implement arch_setup_pdev_archdata Stephen Rothwell 2010-08-05 16:14 ` Kumar Gala 2010-08-05 15:43 ` [PATCH 1/3] driver core: Add ability for arch code to setup pdev_archdata Stephen Rothwell 2010-08-05 16:14 ` Kumar Gala 2010-08-05 18:02 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).