All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Cc: alsa-devel@alsa-project.org, qi.wang@intel.com,
	Takashi Iwai <tiwai@suse.de>,
	linux-kernel@vger.kernel.org, yong.y.wang@intel.com,
	kok.howg.ewe@intel.com, Liam Girdwood <lrg@ti.com>,
	joel.clark@intel.com
Subject: Re: [PATCH v3] sound/soc/lapis: add platform driver for ML7213
Date: Fri, 2 Mar 2012 16:39:15 +0000	[thread overview]
Message-ID: <20120302163915.GD6056@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <1329976011-2251-2-git-send-email-tomoya.rohm@gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 2669 bytes --]

On Thu, Feb 23, 2012 at 02:46:50PM +0900, Tomoya MORINAGA wrote:
> This driver is for LAPIS Semiconductor ML7213 IOH I2S.

I just merged Lars-Peter's dmaengine library code which has been on the
list for a week or so - this should be updated to use that next time
it's posted.  That should save a lot of code from the driver and make
sure it's following best practices for dmaengine use.

> +static struct ioh_i2s_data *i2s_data;
> +static struct ioh_i2s_dma dmadata[MAX_I2S_CH];

Why are these needed, aren't they dynamically allocated by the driver?

> +	case SNDRV_PCM_STREAM_CAPTURE:
> +		offset =\
> +		    ioh_rtd->dma->rx_cur_period * ioh_rtd->dma->period_bytes;

Drop the continuations, line breaks are just whitespace in C outside of
macros and strings.

> +	case SNDRV_PCM_FORMAT_S32_LE:
> +		byte = 24;
> +		break;

That looks wrong...  are you sure you don't support S24_LE or something?

> +		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
> +		case SND_SOC_DAIFMT_NB_NF:
> +			cmn_reg[i] &= ~ML7213I2S_BCLKPOL;
> +			break;
> +		default:
> +			return -EINVAL;

Looking at that code I suspect at least IB_NF is supported too...

> +static int ml7213i2s_dai_set_clkdiv(struct snd_soc_dai *dai,
> +				  int div_id, int div)
> +{

> +	switch (div_id) {
> +	case ML7213IOH_BCLKFS0:

This all looks like BCLK/sample calculations that the driver should
really be able to figure out for itself rather than forcing every user
to replicate the code to do the calculation, calculation in hw_params
would be more normal.

> +#ifdef CONFIG_PM
> +static void ioh_i2s_save_reg_conf(void)

This stuff has exactly one caller, just inline it.  It's also *very*
suspicious that it's not taking an argument specifying the device...

> +#else
> +#define ml7213i2s_soc_suspend NULL
> +#define spdif_soc_resume NULL

Hrm?

> +#ifdef CONFIG_PM
> +	.suspend = ml7213i2s_soc_suspend,
> +	.resume = ml7213i2s_soc_resume,
> +#endif

The whole point with defining the functions to NULL above is to avoid
the ifdef here.

> +static struct platform_driver ioh_i2s_driver_plat = {

> +static struct platform_driver ioh_dai_driver_plat = {

> +static int ioh_i2s_pci_probe(struct pci_dev *pdev,
> +			     const struct pci_device_id *id)

Why are you creating these platform devices?  I don't understand the
function they serve.  The code handling them looks to have quite a few
problems but I'm not clear they should be there in the first place.

> +	rv = request_irq(pdev->irq, ioh_i2s_irq, IRQF_SHARED, "ml7213_ioh",
> +			 pdev);
> +	if (rv != 0) {
> +		printk(KERN_ERR "Failed to allocate irq\n");
> +		goto out_irq;
> +	}

Are you *sure* you're ready to handle interrupts at this point?

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



WARNING: multiple messages have this Message-ID (diff)
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Cc: Liam Girdwood <lrg@ti.com>, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.de>,
	alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	qi.wang@intel.com, yong.y.wang@intel.com, joel.clark@intel.com,
	kok.howg.ewe@intel.com
Subject: Re: [PATCH v3] sound/soc/lapis: add platform driver for ML7213
Date: Fri, 2 Mar 2012 16:39:15 +0000	[thread overview]
Message-ID: <20120302163915.GD6056@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <1329976011-2251-2-git-send-email-tomoya.rohm@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2669 bytes --]

On Thu, Feb 23, 2012 at 02:46:50PM +0900, Tomoya MORINAGA wrote:
> This driver is for LAPIS Semiconductor ML7213 IOH I2S.

I just merged Lars-Peter's dmaengine library code which has been on the
list for a week or so - this should be updated to use that next time
it's posted.  That should save a lot of code from the driver and make
sure it's following best practices for dmaengine use.

> +static struct ioh_i2s_data *i2s_data;
> +static struct ioh_i2s_dma dmadata[MAX_I2S_CH];

Why are these needed, aren't they dynamically allocated by the driver?

> +	case SNDRV_PCM_STREAM_CAPTURE:
> +		offset =\
> +		    ioh_rtd->dma->rx_cur_period * ioh_rtd->dma->period_bytes;

Drop the continuations, line breaks are just whitespace in C outside of
macros and strings.

> +	case SNDRV_PCM_FORMAT_S32_LE:
> +		byte = 24;
> +		break;

That looks wrong...  are you sure you don't support S24_LE or something?

> +		switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
> +		case SND_SOC_DAIFMT_NB_NF:
> +			cmn_reg[i] &= ~ML7213I2S_BCLKPOL;
> +			break;
> +		default:
> +			return -EINVAL;

Looking at that code I suspect at least IB_NF is supported too...

> +static int ml7213i2s_dai_set_clkdiv(struct snd_soc_dai *dai,
> +				  int div_id, int div)
> +{

> +	switch (div_id) {
> +	case ML7213IOH_BCLKFS0:

This all looks like BCLK/sample calculations that the driver should
really be able to figure out for itself rather than forcing every user
to replicate the code to do the calculation, calculation in hw_params
would be more normal.

> +#ifdef CONFIG_PM
> +static void ioh_i2s_save_reg_conf(void)

This stuff has exactly one caller, just inline it.  It's also *very*
suspicious that it's not taking an argument specifying the device...

> +#else
> +#define ml7213i2s_soc_suspend NULL
> +#define spdif_soc_resume NULL

Hrm?

> +#ifdef CONFIG_PM
> +	.suspend = ml7213i2s_soc_suspend,
> +	.resume = ml7213i2s_soc_resume,
> +#endif

The whole point with defining the functions to NULL above is to avoid
the ifdef here.

> +static struct platform_driver ioh_i2s_driver_plat = {

> +static struct platform_driver ioh_dai_driver_plat = {

> +static int ioh_i2s_pci_probe(struct pci_dev *pdev,
> +			     const struct pci_device_id *id)

Why are you creating these platform devices?  I don't understand the
function they serve.  The code handling them looks to have quite a few
problems but I'm not clear they should be there in the first place.

> +	rv = request_irq(pdev->irq, ioh_i2s_irq, IRQF_SHARED, "ml7213_ioh",
> +			 pdev);
> +	if (rv != 0) {
> +		printk(KERN_ERR "Failed to allocate irq\n");
> +		goto out_irq;
> +	}

Are you *sure* you're ready to handle interrupts at this point?

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2012-03-02 16:39 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-23  5:46 [PATCH v6] sound/soc/codecs: add LAPIS Semiconductor ML26124 Tomoya MORINAGA
2012-02-23  5:46 ` Tomoya MORINAGA
2012-02-23  5:46 ` [PATCH v3] sound/soc/lapis: add platform driver for ML7213 Tomoya MORINAGA
2012-02-23  5:46   ` Tomoya MORINAGA
2012-03-02 16:39   ` Mark Brown [this message]
2012-03-02 16:39     ` Mark Brown
2012-03-06  5:48     ` Tomoya MORINAGA
2012-03-06 11:52       ` Mark Brown
2012-03-06 11:52         ` Mark Brown
2012-03-07  1:30         ` Tomoya MORINAGA
2012-03-07  1:30           ` Tomoya MORINAGA
2012-03-07 11:46           ` Mark Brown
2012-03-07 11:46             ` Mark Brown
2012-03-08  2:06             ` Tomoya MORINAGA
2012-03-08  2:06               ` Tomoya MORINAGA
2012-03-08 11:05               ` Mark Brown
2012-03-08 11:05                 ` Mark Brown
2012-03-09  6:26                 ` Tomoya MORINAGA
2012-03-09  6:26                   ` Tomoya MORINAGA
2012-03-09  6:39                   ` [PATCH v4] " Tomoya MORINAGA
2012-03-19 12:00                     ` [PATCH v5] " Tomoya MORINAGA
2012-03-19 12:00                       ` Tomoya MORINAGA
2012-03-21 16:09                       ` Mark Brown
2012-03-21 16:09                         ` Mark Brown
2012-03-22  0:12                         ` Tomoya MORINAGA
2012-03-26 15:40                           ` Mark Brown
2012-03-26 15:40                             ` Mark Brown
2012-05-23  4:17                             ` Tomoya MORINAGA
2012-05-23  9:41                               ` Mark Brown
2012-05-23  9:41                                 ` Mark Brown
2012-05-23 23:46                                 ` Tomoya MORINAGA
2012-05-23 23:46                                   ` Tomoya MORINAGA
2012-05-24 10:07                                   ` Mark Brown
2012-05-24 10:07                                     ` Mark Brown
2012-05-25  9:30                                     ` Tomoya MORINAGA
2012-05-25  9:30                                       ` Tomoya MORINAGA
2012-05-25 10:20                                       ` Vinod Koul
2012-05-25 10:20                                         ` [alsa-devel] " Vinod Koul
2012-05-27 22:19                                         ` Mark Brown
2012-05-27 22:19                                           ` [alsa-devel] " Mark Brown
2012-05-30 10:50                                           ` Tomoya MORINAGA
2012-05-30 10:50                                             ` [alsa-devel] " Tomoya MORINAGA
2012-05-30 12:14                                             ` Mark Brown
2012-05-31  5:38                                               ` Tomoya MORINAGA
2012-05-31  5:38                                                 ` [alsa-devel] " Tomoya MORINAGA
2012-05-31 10:45                                                 ` Mark Brown
2012-05-31 10:45                                                   ` [alsa-devel] " Mark Brown
2012-06-01  8:13                                                   ` Tomoya MORINAGA
2012-06-01  8:13                                                     ` [alsa-devel] " Tomoya MORINAGA
2012-06-01  8:30                                                     ` Mark Brown
2012-06-01  8:30                                                       ` [alsa-devel] " Mark Brown
2012-06-11  7:05                                                       ` Tomoya MORINAGA
2012-06-11  7:05                                                         ` [alsa-devel] " Tomoya MORINAGA
2012-06-11  8:54                                                         ` Mark Brown
2012-06-11  8:54                                                           ` [alsa-devel] " Mark Brown
2012-06-13 10:41                                                           ` Tomoya MORINAGA
2012-06-13 10:41                                                             ` [alsa-devel] " Tomoya MORINAGA
2012-06-13 12:11                                                             ` Mark Brown
2012-06-13 12:11                                                               ` [alsa-devel] " Mark Brown
2012-05-28  5:35                                         ` Tomoya MORINAGA
2012-05-28  5:35                                           ` [alsa-devel] " Tomoya MORINAGA
2012-02-23  5:46 ` [PATCH v5] sound/soc/lapis: add machine driver for ML7213 Carrier Board Tomoya MORINAGA
2012-02-23  5:46   ` Tomoya MORINAGA
2012-03-02 13:05   ` Mark Brown
2012-03-02 13:05     ` Mark Brown
2012-03-06  5:49     ` Tomoya MORINAGA
2012-03-06 11:54       ` Mark Brown
2012-03-06 11:54         ` Mark Brown
2012-03-07  1:57         ` Tomoya MORINAGA
2012-03-07  1:57           ` Tomoya MORINAGA
2012-03-09  6:38           ` [PATCH v6] " Tomoya MORINAGA
2012-03-09  6:38             ` Tomoya MORINAGA
2012-03-14 14:45             ` Mark Brown
2012-03-14 14:45               ` Mark Brown
2012-03-15  4:50               ` Tomoya MORINAGA
2012-03-15 10:50                 ` Mark Brown
2012-03-15 10:50                   ` Mark Brown
2012-03-16  4:07                   ` Tomoya MORINAGA
2012-03-16  4:07                     ` Tomoya MORINAGA
2012-03-16 19:06                     ` Mark Brown
2012-03-16 19:06                       ` Mark Brown
2012-03-18 23:45                       ` Tomoya MORINAGA
2012-03-18 23:45                         ` Tomoya MORINAGA
2012-03-19 12:02                         ` [PATCH v7] " Tomoya MORINAGA
2012-03-19 19:21                           ` Mark Brown
2012-03-19 19:21                             ` Mark Brown
2012-03-21  0:51                             ` Tomoya MORINAGA
2012-03-21  0:51                               ` Tomoya MORINAGA
2012-02-29 23:51 ` [PATCH v6] sound/soc/codecs: add LAPIS Semiconductor ML26124 Mark Brown
2012-02-29 23:51   ` Mark Brown
2012-03-02  8:16   ` Tomoya MORINAGA
2012-03-02 12:58     ` Mark Brown
2012-03-06  3:03       ` Tomoya MORINAGA
2012-03-06 10:00         ` Mark Brown
2012-03-06 10:49           ` Tomoya MORINAGA
2012-03-06 12:12             ` Mark Brown
2012-03-06 12:12               ` Mark Brown
2012-03-07  2:16               ` Tomoya MORINAGA
2012-03-07  2:16                 ` Tomoya MORINAGA
2012-03-07 11:48                 ` Mark Brown
2012-03-08  2:24                   ` Tomoya MORINAGA
2012-03-08  2:24                     ` Tomoya MORINAGA
2012-03-08 11:47                     ` Mark Brown
2012-03-08 11:47                       ` Mark Brown
2012-03-09  6:37                       ` [PATCH v7] " Tomoya MORINAGA
2012-03-09  6:37                         ` Tomoya MORINAGA
2012-03-14 14:39                         ` Mark Brown
2012-03-14 14:39                           ` Mark Brown
2012-03-15  4:51                           ` Tomoya MORINAGA
2012-03-15  4:51                             ` [alsa-devel] " Tomoya MORINAGA
2012-03-14 17:40                     ` [alsa-devel] [PATCH v6] " Lars-Peter Clausen
2012-03-14 17:45                       ` Mark Brown
2012-03-14 17:45                         ` [alsa-devel] " Mark Brown
2012-03-15  6:29                       ` Tomoya MORINAGA
2012-03-15  6:29                         ` [alsa-devel] " Tomoya MORINAGA
2012-03-16  9:55                         ` Tomoya MORINAGA
2012-03-16  9:55                           ` [alsa-devel] " Tomoya MORINAGA
2012-03-17 21:52                           ` Mark Brown
2012-03-19 11:59                             ` [PATCH v8] " Tomoya MORINAGA
2012-03-19 19:07                               ` Mark Brown
2012-03-19 19:07                                 ` Mark Brown
2012-03-21  0:57                                 ` Tomoya MORINAGA
2012-03-21  0:57                                   ` Tomoya MORINAGA

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120302163915.GD6056@opensource.wolfsonmicro.com \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=joel.clark@intel.com \
    --cc=kok.howg.ewe@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@ti.com \
    --cc=qi.wang@intel.com \
    --cc=tiwai@suse.de \
    --cc=tomoya.rohm@gmail.com \
    --cc=yong.y.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.