* [PATCH] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug @ 2012-02-27 14:12 Guennadi Liakhovetski 2012-03-09 9:16 ` [PATCH v2] " Guennadi Liakhovetski 0 siblings, 1 reply; 6+ messages in thread From: Guennadi Liakhovetski @ 2012-02-27 14:12 UTC (permalink / raw) To: linux-mmc; +Cc: linux-sh, Magnus Damm Currently if a platform wants to implement a non-standard card-detection method, it would need to call tmio_mmc_cd_wakeup(), which is an inline function, calling mmc_detect_change(). For this the platform would have to link mmc_core statically into the kernel, losing the ability to build it as a module. This patch adds a callback to the sh_mobile_sdhi driver, which eliminates this dependency. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> --- drivers/mmc/host/sh_mobile_sdhi.c | 12 +++++++++++- include/linux/mmc/sh_mobile_sdhi.h | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c index dd288d6..e916d87 100644 --- a/drivers/mmc/host/sh_mobile_sdhi.c +++ b/drivers/mmc/host/sh_mobile_sdhi.c @@ -100,6 +100,16 @@ static int sh_mobile_sdhi_write16_hook(struct tmio_mmc_host *host, int addr) return 0; } +static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev) +{ + struct sh_mobile_sdhi_info *p = pdev->dev.platform_data; + tmio_mmc_cd_wakeup(p->pdata); +} + +static const struct sh_mobile_sdhi_ops sdhi_ops = { + .cd_wakeup = sh_mobile_sdhi_cd_wakeup, +}; + static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) { struct sh_mobile_sdhi *priv; @@ -121,7 +131,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) p->pdata = mmc_data; if (p->init) { - ret = p->init(pdev); + ret = p->init(pdev, &sdhi_ops); if (ret) goto einit; } diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h index 686b85b..eb13fdd 100644 --- a/include/linux/mmc/sh_mobile_sdhi.h +++ b/include/linux/mmc/sh_mobile_sdhi.h @@ -10,6 +10,10 @@ struct tmio_mmc_data; #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" +struct sh_mobile_sdhi_ops { + void (*cd_wakeup)(const struct platform_device *pdev); +}; + struct sh_mobile_sdhi_info { int dma_slave_tx; int dma_slave_rx; @@ -22,7 +26,8 @@ struct sh_mobile_sdhi_info { int (*get_cd)(struct platform_device *pdev); /* callbacks for board specific setup code */ - int (*init)(struct platform_device *pdev); + int (*init)(struct platform_device *pdev, + const struct sh_mobile_sdhi_ops *ops); void (*cleanup)(struct platform_device *pdev); }; -- 1.7.2.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-02-27 14:12 [PATCH] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug Guennadi Liakhovetski @ 2012-03-09 9:16 ` Guennadi Liakhovetski 2012-03-09 13:51 ` Magnus Damm 2012-03-16 3:18 ` Chris Ball 0 siblings, 2 replies; 6+ messages in thread From: Guennadi Liakhovetski @ 2012-03-09 9:16 UTC (permalink / raw) To: linux-mmc; +Cc: linux-sh, Magnus Damm Currently if a platform wants to implement a non-standard card-detection method, it would need to call tmio_mmc_cd_wakeup(), which is an inline function, calling mmc_detect_change(). For this the platform would have to link mmc_core statically into the kernel, losing the ability to build it as a module. This patch adds a callback to the sh_mobile_sdhi driver, which eliminates this dependency. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> --- v2: 1. remove a call to tmio_mmc_cd_wakeup(), call mmc_detect_change() directly instead 2. document the new struct sh_mobile_sdhi_ops drivers/mmc/host/sh_mobile_sdhi.c | 11 ++++++++++- include/linux/mmc/sh_mobile_sdhi.h | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c index dd288d6..8352054 100644 --- a/drivers/mmc/host/sh_mobile_sdhi.c +++ b/drivers/mmc/host/sh_mobile_sdhi.c @@ -100,6 +100,15 @@ static int sh_mobile_sdhi_write16_hook(struct tmio_mmc_host *host, int addr) return 0; } +static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev) +{ + mmc_detect_change(dev_get_drvdata(&pdev->dev), msecs_to_jiffies(100)); +} + +static const struct sh_mobile_sdhi_ops sdhi_ops = { + .cd_wakeup = sh_mobile_sdhi_cd_wakeup, +}; + static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) { struct sh_mobile_sdhi *priv; @@ -121,7 +130,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) p->pdata = mmc_data; if (p->init) { - ret = p->init(pdev); + ret = p->init(pdev, &sdhi_ops); if (ret) goto einit; } diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h index 686b85b..e94e620 100644 --- a/include/linux/mmc/sh_mobile_sdhi.h +++ b/include/linux/mmc/sh_mobile_sdhi.h @@ -10,6 +10,14 @@ struct tmio_mmc_data; #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" +/** + * struct sh_mobile_sdhi_ops - SDHI driver callbacks + * @cd_wakeup: trigger a card-detection run + */ +struct sh_mobile_sdhi_ops { + void (*cd_wakeup)(const struct platform_device *pdev); +}; + struct sh_mobile_sdhi_info { int dma_slave_tx; int dma_slave_rx; @@ -22,7 +30,8 @@ struct sh_mobile_sdhi_info { int (*get_cd)(struct platform_device *pdev); /* callbacks for board specific setup code */ - int (*init)(struct platform_device *pdev); + int (*init)(struct platform_device *pdev, + const struct sh_mobile_sdhi_ops *ops); void (*cleanup)(struct platform_device *pdev); }; -- 1.7.2.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-03-09 9:16 ` [PATCH v2] " Guennadi Liakhovetski @ 2012-03-09 13:51 ` Magnus Damm 2012-03-16 16:22 ` Chris Ball 2012-03-16 3:18 ` Chris Ball 1 sibling, 1 reply; 6+ messages in thread From: Magnus Damm @ 2012-03-09 13:51 UTC (permalink / raw) To: Guennadi Liakhovetski; +Cc: linux-mmc, linux-sh On Fri, Mar 9, 2012 at 6:16 PM, Guennadi Liakhovetski <g.liakhovetski@gmx.de> wrote: > Currently if a platform wants to implement a non-standard card-detection > method, it would need to call tmio_mmc_cd_wakeup(), which is an inline > function, calling mmc_detect_change(). For this the platform would have > to link mmc_core statically into the kernel, losing the ability to build > it as a module. This patch adds a callback to the sh_mobile_sdhi driver, > which eliminates this dependency. > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Looks good to me, thanks for this! Acked-by: Magnus Damm <damm@opensource.se> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-03-09 13:51 ` Magnus Damm @ 2012-03-16 16:22 ` Chris Ball 0 siblings, 0 replies; 6+ messages in thread From: Chris Ball @ 2012-03-16 16:22 UTC (permalink / raw) To: Magnus Damm; +Cc: Guennadi Liakhovetski, linux-mmc, linux-sh Hi, On Fri, Mar 09 2012, Magnus Damm wrote: > On Fri, Mar 9, 2012 at 6:16 PM, Guennadi Liakhovetski > <g.liakhovetski@gmx.de> wrote: >> Currently if a platform wants to implement a non-standard card-detection >> method, it would need to call tmio_mmc_cd_wakeup(), which is an inline >> function, calling mmc_detect_change(). For this the platform would have >> to link mmc_core statically into the kernel, losing the ability to build >> it as a module. This patch adds a callback to the sh_mobile_sdhi driver, >> which eliminates this dependency. >> >> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> > > Looks good to me, thanks for this! > > Acked-by: Magnus Damm <damm@opensource.se> Pushed to mmc-next for 3.4, thanks. - Chris. -- Chris Ball <cjb@laptop.org> <http://printf.net/> One Laptop Per Child ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-03-09 9:16 ` [PATCH v2] " Guennadi Liakhovetski 2012-03-09 13:51 ` Magnus Damm @ 2012-03-16 3:18 ` Chris Ball 2012-03-16 9:27 ` Guennadi Liakhovetski 1 sibling, 1 reply; 6+ messages in thread From: Chris Ball @ 2012-03-16 3:18 UTC (permalink / raw) To: Guennadi Liakhovetski; +Cc: linux-mmc, linux-sh, Magnus Damm Hi Guennadi, On Fri, Mar 09 2012, Guennadi Liakhovetski wrote: > Currently if a platform wants to implement a non-standard card-detection > method, it would need to call tmio_mmc_cd_wakeup(), which is an inline > function, calling mmc_detect_change(). For this the platform would have > to link mmc_core statically into the kernel, losing the ability to build > it as a module. This patch adds a callback to the sh_mobile_sdhi driver, > which eliminates this dependency. > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> > --- > > v2: > > 1. remove a call to tmio_mmc_cd_wakeup(), call mmc_detect_change() > directly instead > 2. document the new struct sh_mobile_sdhi_ops > > drivers/mmc/host/sh_mobile_sdhi.c | 11 ++++++++++- > include/linux/mmc/sh_mobile_sdhi.h | 11 ++++++++++- > 2 files changed, 20 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c > index dd288d6..8352054 100644 > --- a/drivers/mmc/host/sh_mobile_sdhi.c > +++ b/drivers/mmc/host/sh_mobile_sdhi.c > @@ -100,6 +100,15 @@ static int sh_mobile_sdhi_write16_hook(struct tmio_mmc_host *host, int addr) > return 0; > } > > +static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev) > +{ > + mmc_detect_change(dev_get_drvdata(&pdev->dev), msecs_to_jiffies(100)); > +} > + > +static const struct sh_mobile_sdhi_ops sdhi_ops = { > + .cd_wakeup = sh_mobile_sdhi_cd_wakeup, > +}; > + > static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) > { > struct sh_mobile_sdhi *priv; > @@ -121,7 +130,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) > p->pdata = mmc_data; > > if (p->init) { > - ret = p->init(pdev); > + ret = p->init(pdev, &sdhi_ops); > if (ret) > goto einit; > } This patch doesn't apply because the "if (p->init)" conditional isn't in mmc-next. Maybe you're depending on a patch that I haven't taken yet? > diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h > index 686b85b..e94e620 100644 > --- a/include/linux/mmc/sh_mobile_sdhi.h > +++ b/include/linux/mmc/sh_mobile_sdhi.h > @@ -10,6 +10,14 @@ struct tmio_mmc_data; > #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" > #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" > > +/** > + * struct sh_mobile_sdhi_ops - SDHI driver callbacks > + * @cd_wakeup: trigger a card-detection run > + */ > +struct sh_mobile_sdhi_ops { > + void (*cd_wakeup)(const struct platform_device *pdev); > +}; > + > struct sh_mobile_sdhi_info { > int dma_slave_tx; > int dma_slave_rx; > @@ -22,7 +30,8 @@ struct sh_mobile_sdhi_info { > int (*get_cd)(struct platform_device *pdev); > > /* callbacks for board specific setup code */ > - int (*init)(struct platform_device *pdev); > + int (*init)(struct platform_device *pdev, > + const struct sh_mobile_sdhi_ops *ops); > void (*cleanup)(struct platform_device *pdev); > }; - Chris. -- Chris Ball <cjb@laptop.org> <http://printf.net/> One Laptop Per Child ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug 2012-03-16 3:18 ` Chris Ball @ 2012-03-16 9:27 ` Guennadi Liakhovetski 0 siblings, 0 replies; 6+ messages in thread From: Guennadi Liakhovetski @ 2012-03-16 9:27 UTC (permalink / raw) To: Chris Ball; +Cc: linux-mmc, linux-sh, Magnus Damm, Bastian Hecht Hi Chris On Thu, 15 Mar 2012, Chris Ball wrote: > Hi Guennadi, > > On Fri, Mar 09 2012, Guennadi Liakhovetski wrote: > > Currently if a platform wants to implement a non-standard card-detection > > method, it would need to call tmio_mmc_cd_wakeup(), which is an inline > > function, calling mmc_detect_change(). For this the platform would have > > to link mmc_core statically into the kernel, losing the ability to build > > it as a module. This patch adds a callback to the sh_mobile_sdhi driver, > > which eliminates this dependency. > > > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> > > --- > > > > v2: > > > > 1. remove a call to tmio_mmc_cd_wakeup(), call mmc_detect_change() > > directly instead > > 2. document the new struct sh_mobile_sdhi_ops > > > > drivers/mmc/host/sh_mobile_sdhi.c | 11 ++++++++++- > > include/linux/mmc/sh_mobile_sdhi.h | 11 ++++++++++- > > 2 files changed, 20 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c > > index dd288d6..8352054 100644 > > --- a/drivers/mmc/host/sh_mobile_sdhi.c > > +++ b/drivers/mmc/host/sh_mobile_sdhi.c > > @@ -100,6 +100,15 @@ static int sh_mobile_sdhi_write16_hook(struct tmio_mmc_host *host, int addr) > > return 0; > > } > > > > +static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev) > > +{ > > + mmc_detect_change(dev_get_drvdata(&pdev->dev), msecs_to_jiffies(100)); > > +} > > + > > +static const struct sh_mobile_sdhi_ops sdhi_ops = { > > + .cd_wakeup = sh_mobile_sdhi_cd_wakeup, > > +}; > > + > > static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) > > { > > struct sh_mobile_sdhi *priv; > > @@ -121,7 +130,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) > > p->pdata = mmc_data; > > > > if (p->init) { > > - ret = p->init(pdev); > > + ret = p->init(pdev, &sdhi_ops); > > if (ret) > > goto einit; > > } > > This patch doesn't apply because the "if (p->init)" conditional isn't in > mmc-next. Maybe you're depending on a patch that I haven't taken yet? Looks like you're missing this patch: http://article.gmane.org/gmane.linux.kernel.mmc/12070 But I also just noticed, that it's lacking an Sob... Bastian, could you, please, re-send, so I can ack it? Chris, we have also been discussing what to do about this my patch-series: http://marc.info/?l=linux-sh&m\x132882466624047&w=2 Please just take all mmc patches from that series - all except 5 and 6/10. We'll deal with ARM patches after your push is in the mainline. No breakage should occur. Thanks Guennadi > > > diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h > > index 686b85b..e94e620 100644 > > --- a/include/linux/mmc/sh_mobile_sdhi.h > > +++ b/include/linux/mmc/sh_mobile_sdhi.h > > @@ -10,6 +10,14 @@ struct tmio_mmc_data; > > #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" > > #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" > > > > +/** > > + * struct sh_mobile_sdhi_ops - SDHI driver callbacks > > + * @cd_wakeup: trigger a card-detection run > > + */ > > +struct sh_mobile_sdhi_ops { > > + void (*cd_wakeup)(const struct platform_device *pdev); > > +}; > > + > > struct sh_mobile_sdhi_info { > > int dma_slave_tx; > > int dma_slave_rx; > > @@ -22,7 +30,8 @@ struct sh_mobile_sdhi_info { > > int (*get_cd)(struct platform_device *pdev); > > > > /* callbacks for board specific setup code */ > > - int (*init)(struct platform_device *pdev); > > + int (*init)(struct platform_device *pdev, > > + const struct sh_mobile_sdhi_ops *ops); > > void (*cleanup)(struct platform_device *pdev); > > }; > > - Chris. > -- > Chris Ball <cjb@laptop.org> <http://printf.net/> > One Laptop Per Child > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-03-16 16:22 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-27 14:12 [PATCH] mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug Guennadi Liakhovetski 2012-03-09 9:16 ` [PATCH v2] " Guennadi Liakhovetski 2012-03-09 13:51 ` Magnus Damm 2012-03-16 16:22 ` Chris Ball 2012-03-16 3:18 ` Chris Ball 2012-03-16 9:27 ` Guennadi Liakhovetski
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).