这篇教程C++ AD1889_WRITEW函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中AD1889_WRITEW函数的典型用法代码示例。如果您正苦于以下问题:C++ AD1889_WRITEW函数的具体用法?C++ AD1889_WRITEW怎么用?C++ AD1889_WRITEW使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了AD1889_WRITEW函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ad1889_initcfgstatic void ad1889_initcfg(ad1889_dev_t *dev){ u16 tmp; /* make sure the interrupt bits are setup the way we want */ tmp = AD1889_READW(dev, AD_DMAWAVCTRL); tmp &= ~0x00ff; /* flat dma, no sg, mask out the intr bits */ tmp |= 0x0004; /* intr on count, loop */ AD1889_WRITEW(dev, AD_DMAWAVCTRL, tmp); /* unmute... */ tmp = AD1889_READW(dev, AD_DSWADA); tmp &= ~0x8080; AD1889_WRITEW(dev, AD_DSWADA, tmp);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:15,
示例2: ad1889_codec_write/************************* AC97 interfaces ****************************** */static void ad1889_codec_write(struct ac97_codec *ac97, u8 reg, u16 val){ ad1889_dev_t *dev = ac97->private_data; //DBG("Writing 0x%x to 0x%lx/n", val, dev->regbase + 0x100 + reg); AD1889_WRITEW(dev, 0x100 + reg, val);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:8,
示例3: ad1889_stop_wavstatic void ad1889_stop_wav(ad1889_state_t *state){ unsigned long flags; struct dmabuf *dmabuf = &state->dmabuf; spin_lock_irqsave(&state->card->lock, flags); if (dmabuf->enable & DAC_RUNNING) { u16 tmp; unsigned long cnt = dmabuf->dma_len; tmp = AD1889_READW(ad1889_dev, AD_DSWSMC); tmp &= ~0x0400; /* clear WAEN */ AD1889_WRITEW(ad1889_dev, AD_DSWSMC, tmp); (void) AD1889_READW(ad1889_dev, AD_DSWSMC); /* flush posted PCI write */ pci_unmap_single(ad1889_dev->pci, dmabuf->dma_handle, cnt, PCI_DMA_TODEVICE); dmabuf->enable &= ~DAC_RUNNING; /* update dma pointers */ dmabuf->rd_ptr += cnt; dmabuf->rd_ptr &= (DMA_SIZE - 1); dmabuf->dma_handle = 0; dmabuf->dma_len = 0; dmabuf->ready = 0; wake_up(&dmabuf->wait); } spin_unlock_irqrestore(&state->card->lock, flags);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:33,
示例4: ad1889_aclink_resetstatic int ad1889_aclink_reset(struct pci_dev * pcidev){ u16 stat; int retry = 200; ad1889_dev_t *dev = pci_get_drvdata(pcidev); AD1889_WRITEW(dev, AD_DSCCS, 0x8000); /* turn on clock */ AD1889_READW(dev, AD_DSCCS); WAIT_10MS(); stat = AD1889_READW(dev, AD_ACIC); stat |= 0x0002; /* Reset Disable */ AD1889_WRITEW(dev, AD_ACIC, stat); (void) AD1889_READW(dev, AD_ACIC); /* flush posted write */ udelay(10); stat = AD1889_READW(dev, AD_ACIC); stat |= 0x0001; /* Interface Enable */ AD1889_WRITEW(dev, AD_ACIC, stat); do { if (AD1889_READW(dev, AD_ACIC) & 0x8000) /* Ready */ break; WAIT_10MS(); retry--; } while (retry > 0); if (!retry) { printk(KERN_ERR "ad1889_aclink_reset: codec is not ready [0x%x]/n", AD1889_READW(dev, AD_ACIC)); return -EBUSY; } /* TODO reset AC97 codec */ /* TODO set wave/adc pci ctrl status */ stat = AD1889_READW(dev, AD_ACIC); stat |= 0x0004; /* Audio Stream Output Enable */ AD1889_WRITEW(dev, AD_ACIC, stat); return 0;}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:43,
示例5: ad1889_set_adc_fmtstatic inline void ad1889_set_adc_fmt(ad1889_dev_t *dev, int fmt){ u16 tmp; tmp = AD1889_READW(ad1889_dev, AD_DSRAMC); if (fmt == AFMT_S16_LE) { tmp |= 0x0100; /* set WA16 */ } else if (fmt == AFMT_U8) { tmp &= ~0x0100; /* clear WA16 */ } AD1889_WRITEW(ad1889_dev, AD_DSRAMC, tmp);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:12,
示例6: ad1889_start_wavstatic void ad1889_start_wav(ad1889_state_t *state){ unsigned long flags; struct dmabuf *dmabuf = &state->dmabuf; int cnt; u16 tmp; spin_lock_irqsave(&state->card->lock, flags); if (dmabuf->dma_len) /* DMA already in flight */ goto skip_dma; /* setup dma */ cnt = dmabuf->wr_ptr - dmabuf->rd_ptr; if (cnt == 0) /* done - don't need to do anything */ goto skip_dma; /* If the wr_ptr has wrapped, only map to the end */ if (cnt < 0) cnt = DMA_SIZE - dmabuf->rd_ptr; dmabuf->dma_handle = pci_map_single(ad1889_dev->pci, dmabuf->rawbuf + dmabuf->rd_ptr, cnt, PCI_DMA_TODEVICE); dmabuf->dma_len = cnt; dmabuf->ready = 1; DBG("Starting playback at 0x%p for %ld bytes/n", dmabuf->rawbuf + dmabuf->rd_ptr, dmabuf->dma_len); /* load up the current register set */ AD1889_WRITEL(ad1889_dev, AD_DMAWAVCC, cnt); AD1889_WRITEL(ad1889_dev, AD_DMAWAVICC, cnt); AD1889_WRITEL(ad1889_dev, AD_DMAWAVCA, dmabuf->dma_handle); /* TODO: for now we load the base registers with the same thing */ AD1889_WRITEL(ad1889_dev, AD_DMAWAVBC, cnt); AD1889_WRITEL(ad1889_dev, AD_DMAWAVIBC, cnt); AD1889_WRITEL(ad1889_dev, AD_DMAWAVBA, dmabuf->dma_handle); /* and we're off to the races... */ AD1889_WRITEL(ad1889_dev, AD_DMACHSS, 0x8); tmp = AD1889_READW(ad1889_dev, AD_DSWSMC); tmp |= 0x0400; /* set WAEN */ AD1889_WRITEW(ad1889_dev, AD_DSWSMC, tmp); (void) AD1889_READW(ad1889_dev, AD_DSWSMC); /* flush posted PCI write */ dmabuf->enable |= DAC_RUNNING;skip_dma: spin_unlock_irqrestore(&state->card->lock, flags);}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:52,
示例7: ad1889_openstatic int ad1889_open(struct inode *inode, struct file *file){ /* check minor; only support /dev/dsp atm */ if (iminor(inode) != 3) return -ENXIO; file->private_data = ad1889_dev; ad1889_set_wav_rate(ad1889_dev, 48000); ad1889_set_wav_fmt(ad1889_dev, AFMT_S16_LE); AD1889_WRITEW(ad1889_dev, AD_DSWADA, 0x0404); /* attenuation */ return nonseekable_open(inode, file);}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:13,
示例8: ad1889_set_wav_rate/************************* helper routines ***************************** */static inline void ad1889_set_wav_rate(ad1889_dev_t *dev, int rate){ struct ac97_codec *ac97_codec = dev->ac97_codec; DBG("Setting WAV rate to %d/n", rate); dev->state[AD_WAV_STATE].dmabuf.rate = rate; AD1889_WRITEW(dev, AD_DSWAS, rate); /* Cycle the DAC to enable the new rate */ ac97_codec->codec_write(dev->ac97_codec, AC97_POWER_CONTROL, 0x0200); WAIT_10MS(); ac97_codec->codec_write(dev->ac97_codec, AC97_POWER_CONTROL, 0);}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:14,
示例9: ad1889_openstatic int ad1889_open(struct inode *inode, struct file *file){ /* check minor; only support /dev/dsp atm */ if (MINOR(inode->i_rdev) != 3) return -ENXIO; file->private_data = ad1889_dev; ad1889_set_wav_rate(ad1889_dev, 44100); ad1889_set_wav_fmt(ad1889_dev, AFMT_S16_LE); AD1889_WRITEW(ad1889_dev, AD_DSWADA, 0x0404); /* attenuation */ MOD_INC_USE_COUNT; return 0;}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:14,
示例10: ad1889_set_adc_fmtstatic inline void ad1889_set_adc_fmt(ad1889_dev_t *dev, int fmt){ u16 tmp; DBG("Setting ADC format to 0x%x/n", fmt); tmp = AD1889_READW(ad1889_dev, AD_DSRAMC); if (fmt & AFMT_S16_LE) { tmp |= 0x0100; /* set WA16 */ } else if (fmt & AFMT_U8) { tmp &= ~0x0100; /* clear WA16 */ } AD1889_WRITEW(ad1889_dev, AD_DSRAMC, tmp);}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:14,
示例11: ad1889_initcfgstatic void ad1889_initcfg(ad1889_dev_t *dev){ u16 tmp16; u32 tmp32; /* make sure the interrupt bits are setup the way we want */ tmp32 = AD1889_READL(dev, AD_DMAWAVCTRL); tmp32 &= ~0xff; /* flat dma, no sg, mask out the intr bits */ tmp32 |= 0x6; /* intr on count, loop */ AD1889_WRITEL(dev, AD_DMAWAVCTRL, tmp32); /* unmute... */ tmp16 = AD1889_READW(dev, AD_DSWADA); tmp16 &= ~0x8080; AD1889_WRITEW(dev, AD_DSWADA, tmp16);}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:16,
示例12: ad1889_startstop_adcstatic void ad1889_startstop_adc(ad1889_state_t *state, int start){ u16 tmp; unsigned long flags; spin_lock_irqsave(&state->card->lock, flags); tmp = AD1889_READW(ad1889_dev, AD_DSRAMC); if (start) { state->dmabuf.enable |= ADC_RUNNING; tmp |= 0x0004; /* set ADEN */ } else { state->dmabuf.enable &= ~ADC_RUNNING; tmp &= ~0x0004; /* clear ADEN */ } AD1889_WRITEW(ad1889_dev, AD_DSRAMC, tmp); spin_unlock_irqrestore(&state->card->lock, flags);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:19,
示例13: ad1889_set_adc_ratestatic inline void ad1889_set_adc_rate(ad1889_dev_t *dev, int rate){ dev->state[AD_ADC_STATE].dmabuf.rate = rate; AD1889_WRITEW(dev, AD_DSRES, rate);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:5,
示例14: ad1889_set_wav_rate/************************* helper routines ***************************** */static inline void ad1889_set_wav_rate(ad1889_dev_t *dev, int rate){ dev->state[AD_WAV_STATE].dmabuf.rate = rate; AD1889_WRITEW(dev, AD_DSWAS, rate);}
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:6,
示例15: ad1889_ioctlstatic int ad1889_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){ int val = 0; ad1889_dev_t *dev = (ad1889_dev_t *)file->private_data; struct dmabuf *dmabuf; audio_buf_info abinfo; switch (cmd) { case OSS_GETVERSION: return put_user(SOUND_VERSION, (int *)arg); case SNDCTL_DSP_RESET: break; case SNDCTL_DSP_SYNC: break; case SNDCTL_DSP_SPEED: /* set sampling rate */ if (get_user(val, (int *)arg)) return -EFAULT; if (val > 5400 && val < 48000) { if (file->f_mode & FMODE_WRITE) AD1889_WRITEW(ad1889_dev, AD_DSWAS, val); if (file->f_mode & FMODE_READ) AD1889_WRITEW(ad1889_dev, AD_DSRES, val); } return 0; case SNDCTL_DSP_STEREO: /* undocumented? */ if (get_user(val, (int *)arg)) return -EFAULT; if (file->f_mode & FMODE_READ) { val = AD1889_READW(ad1889_dev, AD_DSWSMC); if (val) { val |= 0x0200; /* set WAST */ } else { val &= ~0x0200; /* clear WAST */ } AD1889_WRITEW(ad1889_dev, AD_DSWSMC, val); } if (file->f_mode & FMODE_WRITE) { val = AD1889_READW(ad1889_dev, AD_DSRAMC); if (val) { val |= 0x0002; /* set ADST */ } else { val &= ~0x0002; /* clear ADST */ } AD1889_WRITEW(ad1889_dev, AD_DSRAMC, val); } return 0; case SNDCTL_DSP_GETBLKSIZE: return put_user(DMA_SIZE, (int *)arg); case SNDCTL_DSP_GETFMTS: return put_user(AFMT_S16_LE|AFMT_U8, (int *)arg); case SNDCTL_DSP_SETFMT: if (get_user(val, (int *)arg)) return -EFAULT; if (file->f_mode & FMODE_READ) ad1889_set_adc_fmt(dev, val); if (file->f_mode & FMODE_WRITE) ad1889_set_wav_fmt(dev, val); return put_user(val, (int *)arg); case SNDCTL_DSP_CHANNELS: break; case SNDCTL_DSP_POST: /* send all data to device */ break; case SNDCTL_DSP_SUBDIVIDE: break; case SNDCTL_DSP_SETFRAGMENT: /* not supported; uses fixed fragment sizes */ return put_user(DMA_SIZE, (int *)arg); case SNDCTL_DSP_GETOSPACE: case SNDCTL_DSP_GETISPACE: /* space left in dma buffers */ if (cmd == SNDCTL_DSP_GETOSPACE) dmabuf = &dev->state[AD_WAV_STATE].dmabuf; else dmabuf = &dev->state[AD_ADC_STATE].dmabuf; abinfo.fragments = 1; abinfo.fragstotal = 1; abinfo.fragsize = DMA_SIZE; abinfo.bytes = DMA_SIZE; return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;//.........这里部分代码省略.........
开发者ID:jhbsz,项目名称:actiontec_opensource_mi424wr-rev-acd-56-0-10-14-4,代码行数:101,
注:本文中的AD1889_WRITEW函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ADCIntClear函数代码示例 C++ AC_MEMCPY函数代码示例 |