Mark,
+static int davinci_i2s_mcasp_probe(struct platform_device *pdev) +{
- struct evm_snd_platform_data *parray = pdev->dev.platform_data;
- struct davinci_pcm_dma_params *dma_data;
- struct resource *mem, *ioarea, *res;
- struct evm_snd_platform_data *pdata;
Why is the McASP driver using platform data called 'evm_snd_patform_data'? This suggests that there's some abstraction problem with the separation between the machine and McASP drivers.
The platform data consists of information specific to EVM and SoC and is used by the platform driver (McASP driver) to get relevant data. Therefore it seems right to use the platform data here. Please let me know your opinion.
Regards, Chaithrika
Are the two DAIs directly tied to each other in hardware? If not it'd probably be better to have them registered as separate devices and probe separately so that if another chip comes along with a different set of DAIs it can be accommodated more readily - if the register interfaces stay consistent it may simply be a case of registering the new device.
- ret = snd_soc_register_dais(davinci_iis_mcasp_dai,
ARRAY_SIZE(davinci_iis_mcasp_dai));
- if (ret != 0)
goto err_release_region;
You should initialise dev within the DAI to be the struct device for the platform driver you were probed with. It might also be nice to tie this in to num_links somehow.