On Sat, Mar 12, 2016 at 12:29:00AM +0100, Michael Trimarchi wrote: > diff --git a/sound/soc/codecs/pcm179x-i2c.c b/sound/soc/codecs/pcm179x-i2c.c > index 4118106..609f07f 100644 > --- a/sound/soc/codecs/pcm179x-i2c.c > +++ b/sound/soc/codecs/pcm179x-i2c.c > @@ -44,12 +44,6 @@ static int pcm179x_i2c_remove(struct i2c_client *client) > return pcm179x_common_exit(&client->dev); > } > > -static const struct of_device_id pcm179x_of_match[] = { > - { .compatible = "ti,pcm1792a", }, > - { } > -}; > -MODULE_DEVICE_TABLE(of, pcm179x_of_match); > - One effect of moving this out of the I2C driver is to break module autoloading: currently modutils does not pay attention to the reference from the driver structure to the ID table but instead just looks at the MODULE_DEVICE_TABLE. This is a problem with some existing devices but we shouldn't introduce new instances. I don't actually know if MODULE_DEVICE_TABLE can reference an object in a different file off the top of my head, though a brief test suggests it has issues. > +static int pcm179x_startup(struct snd_pcm_substream *substream, > + struct snd_soc_dai *dai) > +{ > + struct snd_soc_codec *codec = dai->codec; > + struct pcm179x_private *priv = snd_soc_codec_get_drvdata(codec); > + u64 formats = PCM1792A_FORMATS; > + > + switch (priv->codec_model) { > + case PCM1795: > + formats = PCM1795_FORMATS; > + break; It would be more data driven to just register a different DAI structure for the 1795. Both approaches work, it's just a little nicer to avoid code where possible.