* [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member
@ 2009-10-06 5:51 Mike Frysinger
2009-10-06 5:51 ` [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master Mike Frysinger
[not found] ` <1254808311-3594-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
0 siblings, 2 replies; 20+ messages in thread
From: Mike Frysinger @ 2009-10-06 5:51 UTC (permalink / raw)
To: alsa-devel, Mark Brown; +Cc: uclinux-dist-devel
The codec driver should initialize snd_soc_codec's dev member to the
appropriate device when setting up the device, but these codecs weren't.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
sound/soc/codecs/ad1980.c | 1 +
sound/soc/codecs/ad73311.c | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/ad1980.c b/sound/soc/codecs/ad1980.c
index d7440a9..0477a91 100644
--- a/sound/soc/codecs/ad1980.c
+++ b/sound/soc/codecs/ad1980.c
@@ -203,6 +203,7 @@ static int ad1980_soc_probe(struct platform_device *pdev)
codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(ad1980_reg);
codec->reg_cache_step = 2;
codec->name = "AD1980";
+ codec->dev = &pdev->dev;
codec->owner = THIS_MODULE;
codec->dai = &ad1980_dai;
codec->num_dai = 1;
diff --git a/sound/soc/codecs/ad73311.c b/sound/soc/codecs/ad73311.c
index e61dac5..6e18149 100644
--- a/sound/soc/codecs/ad73311.c
+++ b/sound/soc/codecs/ad73311.c
@@ -50,6 +50,7 @@ static int ad73311_soc_probe(struct platform_device *pdev)
return -ENOMEM;
mutex_init(&codec->mutex);
codec->name = "AD73311";
+ codec->dev = &pdev->dev;
codec->owner = THIS_MODULE;
codec->dai = &ad73311_dai;
codec->num_dai = 1;
--
1.6.5.rc2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 5:51 [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member Mike Frysinger @ 2009-10-06 5:51 ` Mike Frysinger 2009-10-06 9:33 ` Mark Brown [not found] ` <1254808311-3594-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> 1 sibling, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 5:51 UTC (permalink / raw) To: alsa-devel, Mark Brown; +Cc: uclinux-dist-devel Since these drivers rely on a SPI master and fail if the SPI functions aren't present, make sure the Kconfig reflects this dependency. Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- sound/soc/blackfin/Kconfig | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/blackfin/Kconfig b/sound/soc/blackfin/Kconfig index 97f1a25..b91e234 100644 --- a/sound/soc/blackfin/Kconfig +++ b/sound/soc/blackfin/Kconfig @@ -43,7 +43,7 @@ config SND_BF5XX_TDM config SND_BF5XX_SOC_AD1836 tristate "SoC AD1836 Audio support for BF5xx" - depends on SND_BF5XX_TDM + depends on SND_BF5XX_TDM && SPI_MASTER select SND_BF5XX_SOC_TDM select SND_SOC_AD1836 help @@ -51,7 +51,7 @@ config SND_BF5XX_SOC_AD1836 config SND_BF5XX_SOC_AD1938 tristate "SoC AD1938 Audio support for Blackfin" - depends on SND_BF5XX_TDM + depends on SND_BF5XX_TDM && SPI_MASTER select SND_BF5XX_SOC_TDM select SND_SOC_AD1938 help -- 1.6.5.rc2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 5:51 ` [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master Mike Frysinger @ 2009-10-06 9:33 ` Mark Brown [not found] ` <20091006093325.GA10118-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org> 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 9:33 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 06, 2009 at 01:51:51AM -0400, Mike Frysinger wrote: > Since these drivers rely on a SPI master and fail if the SPI functions > aren't present, make sure the Kconfig reflects this dependency. > Signed-off-by: Mike Frysinger <vapier@gentoo.org> Could you please redo this as a dependency on the relevant SPI controller driver? The audio driver isn't going to work without that anyway so it seems more sensible. ^ permalink raw reply [flat|nested] 20+ messages in thread
[parent not found: <20091006093325.GA10118-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org>]
* Re: [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master [not found] ` <20091006093325.GA10118-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org> @ 2009-10-06 9:41 ` Mike Frysinger 2009-10-06 9:50 ` [Uclinux-dist-devel] " Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 9:41 UTC (permalink / raw) To: Mark Brown Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw On Tue, Oct 6, 2009 at 05:33, Mark Brown wrote: > On Tue, Oct 06, 2009 at 01:51:51AM -0400, Mike Frysinger wrote: >> Since these drivers rely on a SPI master and fail if the SPI functions >> aren't present, make sure the Kconfig reflects this dependency. > > Could you please redo this as a dependency on the relevant SPI > controller driver? The audio driver isn't going to work without that > anyway so it seems more sensible. there is no dependency on a specific spi bus master implementation. just like the i2c framework, such a dependency would be against the whole purpose of having a generic framework in the first place. fortunately, this is one piece of the Blackfin ASoC drivers done correctly. in other words, they should work just fine if hooked up to a GPIO SPI bus or a SPORT SPI bus or a Blackfin on-chip SPI bus or ...... -mike _______________________________________________ Uclinux-dist-devel mailing list Uclinux-dist-devel@blackfin.uclinux.org https://blackfin.uclinux.org/mailman/listinfo/uclinux-dist-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 9:41 ` Mike Frysinger @ 2009-10-06 9:50 ` Mark Brown 2009-10-06 10:00 ` Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 9:50 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 06, 2009 at 05:41:40AM -0400, Mike Frysinger wrote: > there is no dependency on a specific spi bus master implementation. > just like the i2c framework, such a dependency would be against the > whole purpose of having a generic framework in the first place. > fortunately, this is one piece of the Blackfin ASoC drivers done > correctly. in other words, they should work just fine if hooked up to > a GPIO SPI bus or a SPORT SPI bus or a Blackfin on-chip SPI bus or > ...... These are board-specific drivers to hook things up on a given system (presumably various eval boards), they're the non-generic part of the system that says how the generic DAI and CODEC drivers have been hooked up. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 9:50 ` [Uclinux-dist-devel] " Mark Brown @ 2009-10-06 10:00 ` Mike Frysinger 2009-10-06 10:39 ` Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 10:00 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 6, 2009 at 05:50, Mark Brown wrote: > On Tue, Oct 06, 2009 at 05:41:40AM -0400, Mike Frysinger wrote: >> there is no dependency on a specific spi bus master implementation. >> just like the i2c framework, such a dependency would be against the >> whole purpose of having a generic framework in the first place. >> fortunately, this is one piece of the Blackfin ASoC drivers done >> correctly. in other words, they should work just fine if hooked up to >> a GPIO SPI bus or a SPORT SPI bus or a Blackfin on-chip SPI bus or >> ...... > > These are board-specific drivers to hook things up on a given system > (presumably various eval boards), they're the non-generic part of the > system that says how the generic DAI and CODEC drivers have been hooked > up. except the Blackfin machine drivers are written in such a way that they arent specific to a board. they'll work on any system with a SPORT and a SPI/I2C bus. -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 10:00 ` Mike Frysinger @ 2009-10-06 10:39 ` Mark Brown 2009-10-06 11:32 ` Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 10:39 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 06, 2009 at 06:00:23AM -0400, Mike Frysinger wrote: > On Tue, Oct 6, 2009 at 05:50, Mark Brown wrote: > > These are board-specific drivers to hook things up on a given system > > (presumably various eval boards), they're the non-generic part of the > > system that says how the generic DAI and CODEC drivers have been hooked > > up. > except the Blackfin machine drivers are written in such a way that > they arent specific to a board. they'll work on any system with a > SPORT and a SPI/I2C bus. That's not 100% clear - some of the drivers say they're specific to particular designs (either in the help text or by having board-specific GPIO setup). It's certainly the intention of the API that the board hookups be fixed at run time rather than at compile time, and that things like using multiple CPU DAIs should be possible. The other option here is to make the CODEC drivers build without their control buses, which keeps the people doing random configurations happy. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 10:39 ` Mark Brown @ 2009-10-06 11:32 ` Mike Frysinger 2009-10-06 11:52 ` Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 11:32 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 6, 2009 at 06:39, Mark Brown wrote: > On Tue, Oct 06, 2009 at 06:00:23AM -0400, Mike Frysinger wrote: >> On Tue, Oct 6, 2009 at 05:50, Mark Brown wrote: >> > These are board-specific drivers to hook things up on a given system >> > (presumably various eval boards), they're the non-generic part of the >> > system that says how the generic DAI and CODEC drivers have been hooked >> > up. >> >> except the Blackfin machine drivers are written in such a way that >> they arent specific to a board. they'll work on any system with a >> SPORT and a SPI/I2C bus. > > That's not 100% clear - some of the drivers say they're specific to > particular designs (either in the help text or by having board-specific > GPIO setup). It's certainly the intention of the API that the board > hookups be fixed at run time rather than at compile time, and that > things like using multiple CPU DAIs should be possible. > > The other option here is to make the CODEC drivers build without their > control buses, which keeps the people doing random configurations happy. yes, there are many descriptions which are way more specific than they should be. the issue stems from people developing with a narrow focus rather than keeping the big picture in their head. they test one specific configuration and then just bang out the name/info with that. ive been trying to stem the flow and clean up existing code, but it doesnt always work out. AD1836 is an example of this -- the Kconfig text says "BF5xx", but that's useless because that covers all Blackfin parts. "STAMP/EZKIT" is a lie -- there is no dependency on these base board designs. the machine driver only needs a SPORT (TDM) for transport and the codec needs SPI for configuration. every Blackfin part has at least one SPORT. but the core SPORT handling is the crux of the matter -- as i mentioned in another thread, our implementation is severely limited in terms of multiple instances and is in need of restructuring. the GPIO handling is made "generic" by putting it into the Kconfig. so the machine-specific aspect is now in the .config file instead of the machine driver. really this needs to get pushed out into the board resources (another bad habit that we've been reigning in -- encoding flexible resources in Kconfig). back to the original issue. the AD1836/AD1938 have their registers programed via SPI, but they dont care what SPI bus they're connected to. that is specified in the board resources. because of the way the Kconfig options are handled (machine drivers select codecs), the SPI_MASTER dependency cannot be added to the codec Kconfigs in codecs/Kconfig. so even though the SPI dependency is only in the codec and not the machine driver, the machine driver needs to declare the SPI_MASTER dependency to prevent incorrect config selections and link failures. -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 11:32 ` Mike Frysinger @ 2009-10-06 11:52 ` Mark Brown 2009-10-06 21:09 ` Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 11:52 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 06, 2009 at 07:32:30AM -0400, Mike Frysinger wrote: > back to the original issue. the AD1836/AD1938 have their registers > programed via SPI, but they dont care what SPI bus they're connected > to. that is specified in the board resources. because of the way the > Kconfig options are handled (machine drivers select codecs), the > SPI_MASTER dependency cannot be added to the codec Kconfigs in > codecs/Kconfig. so even though the SPI dependency is only in the > codec and not the machine driver, the machine driver needs to declare > the SPI_MASTER dependency to prevent incorrect config selections and > link failures. Or, like I say, the drivers for the CODEC should be changed to allow build with no control bus. This is a general problem for all the ASoC drivers and I'm still not sure which way to go. Depending on just SPI support fixes the random build case but doesn't help end users get the driver working so it doesn't seem so useful. If we're only going to be able to fix the random build case then it seems more useful to do so by having the CODEC driver able to build without the control bus, that way individual machine drivers don't need to worry about it. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 11:52 ` Mark Brown @ 2009-10-06 21:09 ` Mike Frysinger 2009-10-06 22:07 ` Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 21:09 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 6, 2009 at 07:52, Mark Brown wrote: > On Tue, Oct 06, 2009 at 07:32:30AM -0400, Mike Frysinger wrote: >> back to the original issue. the AD1836/AD1938 have their registers >> programed via SPI, but they dont care what SPI bus they're connected >> to. that is specified in the board resources. because of the way the >> Kconfig options are handled (machine drivers select codecs), the >> SPI_MASTER dependency cannot be added to the codec Kconfigs in >> codecs/Kconfig. so even though the SPI dependency is only in the >> codec and not the machine driver, the machine driver needs to declare >> the SPI_MASTER dependency to prevent incorrect config selections and >> link failures. > > Or, like I say, the drivers for the CODEC should be changed to allow > build with no control bus. This is a general problem for all the ASoC > drivers and I'm still not sure which way to go. Depending on just SPI > support fixes the random build case but doesn't help end users get the > driver working so it doesn't seem so useful. If we're only going to be > able to fix the random build case then it seems more useful to do so by > having the CODEC driver able to build without the control bus, that way > individual machine drivers don't need to worry about it. i dont see how abstracting away the bus such that codec drivers are allowed to build without proper bus support is useful. the AD1836/AD1938 only work with the SPI bus, so if support for that is disabled, having the driver compiled and installed is pointless. -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 21:09 ` Mike Frysinger @ 2009-10-06 22:07 ` Mark Brown 2009-10-07 8:32 ` Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 22:07 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 06, 2009 at 05:09:42PM -0400, Mike Frysinger wrote: > i dont see how abstracting away the bus such that codec drivers are > allowed to build without proper bus support is useful. the > AD1836/AD1938 only work with the SPI bus, so if support for that is > disabled, having the driver compiled and installed is pointless. Both approaches allow drivers to be built which can't actually be used since neither guarantees that there will be a driver for the SPI controller. Either way all we're doing is making sure that the kernel will build, the user can still build things so that the audio driver won't do anything useful. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-06 22:07 ` Mark Brown @ 2009-10-07 8:32 ` Mike Frysinger 2009-10-07 10:19 ` Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-07 8:32 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 6, 2009 at 18:07, Mark Brown wrote: > On Tue, Oct 06, 2009 at 05:09:42PM -0400, Mike Frysinger wrote: >> i dont see how abstracting away the bus such that codec drivers are >> allowed to build without proper bus support is useful. the >> AD1836/AD1938 only work with the SPI bus, so if support for that is >> disabled, having the driver compiled and installed is pointless. > > Both approaches allow drivers to be built which can't actually be used > since neither guarantees that there will be a driver for the SPI > controller. Either way all we're doing is making sure that the kernel > will build, the user can still build things so that the audio driver > won't do anything useful. hmm, that's certainly true. if we look at it as "screwed either way", then going to a generic bus indirection sounds like it'd only add runtime overhead for no real gain ? in the face of this proposed effort being a ways off, doesnt it make sense to still merge the original proposed patch ? -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-07 8:32 ` Mike Frysinger @ 2009-10-07 10:19 ` Mark Brown 2009-10-08 0:27 ` Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-07 10:19 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Wed, Oct 07, 2009 at 04:32:06AM -0400, Mike Frysinger wrote: > hmm, that's certainly true. if we look at it as "screwed either way", > then going to a generic bus indirection sounds like it'd only add > runtime overhead for no real gain ? I was mostly thinking ifdefs here - we'll always need some bus-specific stuff in the drivers to register them. It's not pretty but it meets the needs of people doing randconfig builds. We already have as much bus indirection as ASoC needs, and there is actually already some bus access code sharing there as of 2.6.32 (in soc-cache.c) but it's optional and always will be since we need to cater for devices that are parts of MFDs which have device specific register acceses. > in the face of this proposed effort being a ways off, doesnt it make > sense to still merge the original proposed patch ? The ifdefery isn't technically hard to do and given your use case where you don't know which controller is in use it looks like the only way to go for this. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-07 10:19 ` Mark Brown @ 2009-10-08 0:27 ` Mike Frysinger 2009-10-08 10:01 ` Mark Brown 0 siblings, 1 reply; 20+ messages in thread From: Mike Frysinger @ 2009-10-08 0:27 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Wed, Oct 7, 2009 at 06:19, Mark Brown wrote: > On Wed, Oct 07, 2009 at 04:32:06AM -0400, Mike Frysinger wrote: >> hmm, that's certainly true. if we look at it as "screwed either way", >> then going to a generic bus indirection sounds like it'd only add >> runtime overhead for no real gain ? > > I was mostly thinking ifdefs here - we'll always need some bus-specific > stuff in the drivers to register them. It's not pretty but it meets the > needs of people doing randconfig builds. > > We already have as much bus indirection as ASoC needs, and there is > actually already some bus access code sharing there as of 2.6.32 (in > soc-cache.c) but it's optional and always will be since we need to cater > for devices that are parts of MFDs which have device specific register > acceses. > >> in the face of this proposed effort being a ways off, doesnt it make >> sense to still merge the original proposed patch ? > > The ifdefery isn't technically hard to do and given your use case where > you don't know which controller is in use it looks like the only way to > go for this. i dont think the soc-cache could be used currently by the ad1836 as it doesnt use a 7/9 split with the address/data. it uses like 6/10 (4 addr bits, one bit for read/write, one bit is always 0, and 10 data bits). guessing the write bit can be considered part of the addr as the read always comes from the cache, but that still gives us 5/10 split. maybe a new 6/10 set of funcs should be added ... snd_soc_7_9_write() looks like it does a little more bit work than it needs to ? if data is declared as a u16, then you have: u16 data = (reg << 9) | (value & 0x01ff); this is what the ad1836 driver does now for its data split. in the mean time, rather than adding #ifdef to the codec driver, we could create a local header like "bus-stubs.h" that stubs all the relevant functions to an error value. then all codec drivers that dont use soc-cache can use that instead and the only change needed is to add: #include "bus-stubs.h" -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-08 0:27 ` Mike Frysinger @ 2009-10-08 10:01 ` Mark Brown 2009-10-09 0:01 ` Mike Frysinger 2009-10-10 3:47 ` Barry Song 0 siblings, 2 replies; 20+ messages in thread From: Mark Brown @ 2009-10-08 10:01 UTC (permalink / raw) To: Mike Frysinger; +Cc: uclinux-dist-devel, alsa-devel On Wed, Oct 07, 2009 at 08:27:56PM -0400, Mike Frysinger wrote: > i dont think the soc-cache could be used currently by the ad1836 as it > doesnt use a 7/9 split with the address/data. it uses like 6/10 (4 > addr bits, one bit for read/write, one bit is always 0, and 10 data > bits). guessing the write bit can be considered part of the addr as > the read always comes from the cache, but that still gives us 5/10 > split. maybe a new 6/10 set of funcs should be added ... That's the idea - add new functions for any new register formats. > snd_soc_7_9_write() looks like it does a little more bit work than it > needs to ? if data is declared as a u16, then you have: > u16 data = (reg << 9) | (value & 0x01ff); > this is what the ad1836 driver does now for its data split. Probably. I'd need to check but I believe that's there to handle endianness variations in the host, though a cpu_to_ in what you have above ought to be able to take care of that. The code was cut'n'pasted from what was in the drivers already. > in the mean time, rather than adding #ifdef to the codec driver, we > could create a local header like "bus-stubs.h" that stubs all the > relevant functions to an error value. then all codec drivers that > dont use soc-cache can use that instead and the only change needed is > to add: > #include "bus-stubs.h" I'm not sure I feel up to doing that locally in ASoC rather than in the relevant subsystems. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-08 10:01 ` Mark Brown @ 2009-10-09 0:01 ` Mike Frysinger 2009-10-10 3:47 ` Barry Song 1 sibling, 0 replies; 20+ messages in thread From: Mike Frysinger @ 2009-10-09 0:01 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Thu, Oct 8, 2009 at 06:01, Mark Brown wrote: > On Wed, Oct 07, 2009 at 08:27:56PM -0400, Mike Frysinger wrote: >> i dont think the soc-cache could be used currently by the ad1836 as it >> doesnt use a 7/9 split with the address/data. it uses like 6/10 (4 >> addr bits, one bit for read/write, one bit is always 0, and 10 data >> bits). guessing the write bit can be considered part of the addr as >> the read always comes from the cache, but that still gives us 5/10 >> split. maybe a new 6/10 set of funcs should be added ... > > That's the idea - add new functions for any new register formats. i'll add a tracker item to get the ad codecs converted to soc-cache when possible and that'll naturally address the SPI dependency >> snd_soc_7_9_write() looks like it does a little more bit work than it >> needs to ? if data is declared as a u16, then you have: >> u16 data = (reg << 9) | (value & 0x01ff); >> this is what the ad1836 driver does now for its data split. > > Probably. I'd need to check but I believe that's there to handle > endianness variations in the host, though a cpu_to_ in what you have > above ought to be able to take care of that. The code was cut'n'pasted > from what was in the drivers already. true ... being little endian sometimes makes you forget about these things ;). the ad1836 codec probably doesnt work on BE systems. >> in the mean time, rather than adding #ifdef to the codec driver, we >> could create a local header like "bus-stubs.h" that stubs all the >> relevant functions to an error value. then all codec drivers that >> dont use soc-cache can use that instead and the only change needed is >> to add: >> #include "bus-stubs.h" > > I'm not sure I feel up to doing that locally in ASoC rather than in the > relevant subsystems. i dont feel like convincing subsystem maintainers that this is a good idea for all consumers of SPI/I2C, especially since i'm not convinced myself. we'll just go the soc-cache route and not worry about it. -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master 2009-10-08 10:01 ` Mark Brown 2009-10-09 0:01 ` Mike Frysinger @ 2009-10-10 3:47 ` Barry Song [not found] ` <3c17e3570910092047n39db1ac9vfe76b9304897a794-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 1 sibling, 1 reply; 20+ messages in thread From: Barry Song @ 2009-10-10 3:47 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel, Mike Frysinger On Thu, Oct 8, 2009 at 6:01 PM, Mark Brown <broonie@opensource.wolfsonmicro.com> wrote: > On Wed, Oct 07, 2009 at 08:27:56PM -0400, Mike Frysinger wrote: > >> i dont think the soc-cache could be used currently by the ad1836 as it >> doesnt use a 7/9 split with the address/data. it uses like 6/10 (4 >> addr bits, one bit for read/write, one bit is always 0, and 10 data >> bits). guessing the write bit can be considered part of the addr as >> the read always comes from the cache, but that still gives us 5/10 >> split. maybe a new 6/10 set of funcs should be added ... > > That's the idea - add new functions for any new register formats. we do those based on the idea that it is a waste all codecs need to use almost same ways to handle register access. If we use soc-cache to handle register access issues and run as abstract layer for all codecs, why not rename it to soc-reg or soc-bus? It seems cache is only a little part of the responsibility of this module. It's better that functions like xx_7_9_read xx_7_9_write xx_8_8_read xx_8_8_write should not become API because we never know what will be the format for codecs. We should have a xx_n_m_read/xx_n_m_write or just a xx_read/xx_write, with n and m as parameters? A codec using snd_soc_7_9_spi_write/snd_soc_8_16_read_i2c should select SPI and I2C in fact. Otherwise, why does it use these functions as codec->hw_read()/codec->hw_write() but not enable SPI and I2C? It seems that defining snd_soc_7_9_spi_write and so on as NULL when SPI is not selected is really useless, just let us pass the compiling to get a module which can't work at all! > >> snd_soc_7_9_write() looks like it does a little more bit work than it >> needs to ? if data is declared as a u16, then you have: >> u16 data = (reg << 9) | (value & 0x01ff); >> this is what the ad1836 driver does now for its data split. > > Probably. I'd need to check but I believe that's there to handle > endianness variations in the host, though a cpu_to_ in what you have > above ought to be able to take care of that. The code was cut'n'pasted > from what was in the drivers already. > >> in the mean time, rather than adding #ifdef to the codec driver, we >> could create a local header like "bus-stubs.h" that stubs all the >> relevant functions to an error value. then all codec drivers that >> dont use soc-cache can use that instead and the only change needed is >> to add: >> #include "bus-stubs.h" > > I'm not sure I feel up to doing that locally in ASoC rather than in the > relevant subsystems. > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel > _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
[parent not found: <3c17e3570910092047n39db1ac9vfe76b9304897a794-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [alsa-devel] [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master [not found] ` <3c17e3570910092047n39db1ac9vfe76b9304897a794-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2009-10-10 11:11 ` Mark Brown 0 siblings, 0 replies; 20+ messages in thread From: Mark Brown @ 2009-10-10 11:11 UTC (permalink / raw) To: Barry Song Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw On Sat, Oct 10, 2009 at 11:47:10AM +0800, Barry Song wrote: > On Thu, Oct 8, 2009 at 6:01 PM, Mark Brown > > That's the idea - add new functions for any new register formats. > we do those based on the idea that it is a waste all codecs need to > use almost same ways to handle register access. If we use soc-cache to Not just that, the goal is to make it easier to make changes to the way register accesses are managed by avoiding the need to go through each and every single driver and update it. The most obvious thing is adding support for powering off the CODEC rather than just bringing it down to standby. > handle register access issues and run as abstract layer for all > codecs, why not rename it to soc-reg or soc-bus? It seems cache is > only a little part of the responsibility of this module. soc-reg (or probably register) would do equally well, like I say longer term the goal is to support doing interesting things with the cache. I don't know that it's worth renaming at this point. > It's better that functions like xx_7_9_read xx_7_9_write xx_8_8_read > xx_8_8_write should not become API because we never know what will be > the format for codecs. We should have a xx_n_m_read/xx_n_m_write or > just a xx_read/xx_write, with n and m as parameters? They're not APIs, they're only visible within the file. Drivers using the cache only see the one function they use to initialise the cache with everything else in there hidden from them. They're not specified as part of the interface for the read and write functions because they'd be a lot of noise for callers - they don't generally change at runtime and are something that should really be abstracted away from the generic code anyway. > A codec using snd_soc_7_9_spi_write/snd_soc_8_16_read_i2c should > select SPI and I2C in fact. Otherwise, why does it use these functions The CODECs can't do this since they are selected themselves and Kconfig ignores all dependencies from things that are selected. In any case, a given board is only going to need one or the other of the control interfaces so the CODEC driver needs to leave this up to the machine drivers anyway. The register cache code is the wrong level to be making decisions about things like this, the CODEC drivers and the register cache code are themselves not usable without a machine driver - this is utility code which should just do whatever it is asked by its users rather than forcing decisons on them. > as codec->hw_read()/codec->hw_write() but not enable SPI and I2C? It > seems that defining snd_soc_7_9_spi_write and so on as NULL when SPI > is not selected is really useless, just let us pass the compiling to > get a module which can't work at all! It's no use from the point of view of getting a working driver, yes, but then to get something useful you really need the machine driver to ensure that the correct controller driver is being built - simple support for the bus is not enough, we also need the controller. As discussed earlier in this thread for some of the Blackfin machines it's not even possible to do that since we can't tell which controller driver needs to be used since the machine driver can be used with many boards. Another thing to bear in mind here is that there are people who do things like build the kernel with random .configs and we want to avoid breaking their builds due to poor luck in the configuration they generate while still getting the build coverage that results. We also need to be able to support compilation with either I2C or SPI but not both in order to avoid forcing boards to include support for a bus that may not be used anywhere on the board at all. That means that both buses need to be individually optional at the CODEC level. ^ permalink raw reply [flat|nested] 20+ messages in thread
[parent not found: <1254808311-3594-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>]
* Re: [alsa-devel] [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member [not found] ` <1254808311-3594-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> @ 2009-10-06 9:42 ` Mark Brown 2009-10-06 9:59 ` [Uclinux-dist-devel] " Mike Frysinger 0 siblings, 1 reply; 20+ messages in thread From: Mark Brown @ 2009-10-06 9:42 UTC (permalink / raw) To: Mike Frysinger Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw On Tue, Oct 06, 2009 at 01:51:50AM -0400, Mike Frysinger wrote: > The codec driver should initialize snd_soc_codec's dev member to the > appropriate device when setting up the device, but these codecs weren't. > Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> No, this is the wrong approach - codec->dev should never be being set to the socdev device, it should be being set to the device model device for the CODEC (as should the dev members for the DAIs). For ad73311 this means it needs to be converted to use proper device model instantiation, see wm8731 for an example of doing this. ad1980 should be handled by generic AC97 code in the core. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Uclinux-dist-devel] [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member 2009-10-06 9:42 ` [alsa-devel] [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member Mark Brown @ 2009-10-06 9:59 ` Mike Frysinger 0 siblings, 0 replies; 20+ messages in thread From: Mike Frysinger @ 2009-10-06 9:59 UTC (permalink / raw) To: Mark Brown; +Cc: uclinux-dist-devel, alsa-devel On Tue, Oct 6, 2009 at 05:42, Mark Brown wrote: > On Tue, Oct 06, 2009 at 01:51:50AM -0400, Mike Frysinger wrote: >> The codec driver should initialize snd_soc_codec's dev member to the >> appropriate device when setting up the device, but these codecs weren't. > > No, this is the wrong approach - codec->dev should never be being set to > the socdev device, it should be being set to the device model device for > the CODEC (as should the dev members for the DAIs). For ad73311 this > means it needs to be converted to use proper device model instantiation, > see wm8731 for an example of doing this. ad1980 should be handled by > generic AC97 code in the core. meh, this sounds like effort. i'll trick Cliff/Barry into doing it ;). -mike _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2009-10-10 11:11 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-06 5:51 [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member Mike Frysinger
2009-10-06 5:51 ` [PATCH 2/2] ASoC: Blackfin AD1836/AD1938 machine drivers: require SPI master Mike Frysinger
2009-10-06 9:33 ` Mark Brown
[not found] ` <20091006093325.GA10118-HF5t3jzXg/6ND3a5+9QAFujbO/Zr0HzV@public.gmane.org>
2009-10-06 9:41 ` Mike Frysinger
2009-10-06 9:50 ` [Uclinux-dist-devel] " Mark Brown
2009-10-06 10:00 ` Mike Frysinger
2009-10-06 10:39 ` Mark Brown
2009-10-06 11:32 ` Mike Frysinger
2009-10-06 11:52 ` Mark Brown
2009-10-06 21:09 ` Mike Frysinger
2009-10-06 22:07 ` Mark Brown
2009-10-07 8:32 ` Mike Frysinger
2009-10-07 10:19 ` Mark Brown
2009-10-08 0:27 ` Mike Frysinger
2009-10-08 10:01 ` Mark Brown
2009-10-09 0:01 ` Mike Frysinger
2009-10-10 3:47 ` Barry Song
[not found] ` <3c17e3570910092047n39db1ac9vfe76b9304897a794-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-10 11:11 ` [alsa-devel] " Mark Brown
[not found] ` <1254808311-3594-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2009-10-06 9:42 ` [alsa-devel] [PATCH 1/2] ASoC: AD1980/AD73311: make sure to set dev member Mark Brown
2009-10-06 9:59 ` [Uclinux-dist-devel] " Mike Frysinger
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.