[alsa-devel] [PATCH v6 1/3] ALSA: hdac_ext: add extended HDA bus
Vinod Koul
vinod.koul at intel.com
Tue Jun 9 12:06:51 CEST 2015
On Mon, Jun 08, 2015 at 05:40:46PM +0200, Takashi Iwai wrote:
> At Mon, 8 Jun 2015 21:00:14 +0530,
> Vinod Koul wrote:
> >
> > On Mon, Jun 08, 2015 at 03:38:22PM +0530, Vinod Koul wrote:
> > > > > +#define snd_hdac_ext_bus_ppcap_updateb(dev, reg, mask, val) \
> > > > > + snd_hdac_ext_bus_ppcap_writeb(dev, reg, \
> > > > > + (snd_hdac_ext_bus_ppcap_readb(dev, reg) & \
> > > > > + ~(mask)) | (val))
> > > >
> > > > It's not necessarily good to wrap all with such macros.
> > > > For azx_write*(), I kept them as is for reducing the amount of useless
> > > > code rewrites. But for new codes, I don't think it's always worth...
> > > Actually while updating the patch for ext I was wondering about this too.
> > >
> > > So we cna remove these and use snd_hdac_chip_writel/w/b here
> > As Jeeja pointed we can't use snd_hdac_chip_writel as we need to use a
> > different base. So we cna move this to use plain writel only
> >
> > Any other ideas?
>
> I don't think you need to access via io_ops redirection as these are
> SKL specific registers. Use plain readl()/writel() and keep things
> as simple as possible.
>
> (And better to avoid w and b variants.)
Okay I have removed all these macros but ended up defining one generic update
macros (most of the places we are doing read and write, so better to use
update macro
/* update register macro */
#define snd_hdac_updatel(addr, reg, mask, val) \
writel(addr, reg, (readl(addr, reg) & ~(mask)) | (val))
yes its updatel to signify that it uses writel and readl
Let me know if you are fine with this approach
--
~Vinod
More information about the Alsa-devel
mailing list