linux/sound/pci/sis7019.c
<<
>>
Prefs
   1/*
   2 *  Driver for SiS7019 Audio Accelerator
   3 *
   4 *  Copyright (C) 2004-2007, David Dillow
   5 *  Written by David Dillow <dave@thedillows.org>
   6 *  Inspired by the Trident 4D-WaveDX/NX driver.
   7 *
   8 *  All rights reserved.
   9 *
  10 *  This program is free software; you can redistribute it and/or modify
  11 *  it under the terms of the GNU General Public License as published by
  12 *  the Free Software Foundation, version 2.
  13 *
  14 *  This program is distributed in the hope that it will be useful,
  15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17 *  GNU General Public License for more details.
  18 *
  19 *  You should have received a copy of the GNU General Public License
  20 *  along with this program; if not, write to the Free Software
  21 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  22 */
  23
  24#include <linux/init.h>
  25#include <linux/pci.h>
  26#include <linux/time.h>
  27#include <linux/slab.h>
  28#include <linux/module.h>
  29#include <linux/interrupt.h>
  30#include <linux/delay.h>
  31#include <sound/core.h>
  32#include <sound/ac97_codec.h>
  33#include <sound/initval.h>
  34#include "sis7019.h"
  35
  36MODULE_AUTHOR("David Dillow <dave@thedillows.org>");
  37MODULE_DESCRIPTION("SiS7019");
  38MODULE_LICENSE("GPL");
  39MODULE_SUPPORTED_DEVICE("{{SiS,SiS7019 Audio Accelerator}}");
  40
  41static int index = SNDRV_DEFAULT_IDX1;  /* Index 0-MAX */
  42static char *id = SNDRV_DEFAULT_STR1;   /* ID for this card */
  43static bool enable = 1;
  44static int codecs = 1;
  45
  46module_param(index, int, 0444);
  47MODULE_PARM_DESC(index, "Index value for SiS7019 Audio Accelerator.");
  48module_param(id, charp, 0444);
  49MODULE_PARM_DESC(id, "ID string for SiS7019 Audio Accelerator.");
  50module_param(enable, bool, 0444);
  51MODULE_PARM_DESC(enable, "Enable SiS7019 Audio Accelerator.");
  52module_param(codecs, int, 0444);
  53MODULE_PARM_DESC(codecs, "Set bit to indicate that codec number is expected to be present (default 1)");
  54
  55static DEFINE_PCI_DEVICE_TABLE(snd_sis7019_ids) = {
  56        { PCI_DEVICE(PCI_VENDOR_ID_SI, 0x7019) },
  57        { 0, }
  58};
  59
  60MODULE_DEVICE_TABLE(pci, snd_sis7019_ids);
  61
  62/* There are three timing modes for the voices.
  63 *
  64 * For both playback and capture, when the buffer is one or two periods long,
  65 * we use the hardware's built-in Mid-Loop Interrupt and End-Loop Interrupt
  66 * to let us know when the periods have ended.
  67 *
  68 * When performing playback with more than two periods per buffer, we set
  69 * the "Stop Sample Offset" and tell the hardware to interrupt us when we
  70 * reach it. We then update the offset and continue on until we are
  71 * interrupted for the next period.
  72 *
  73 * Capture channels do not have a SSO, so we allocate a playback channel to
  74 * use as a timer for the capture periods. We use the SSO on the playback
  75 * channel to clock out virtual periods, and adjust the virtual period length
  76 * to maintain synchronization. This algorithm came from the Trident driver.
  77 *
  78 * FIXME: It'd be nice to make use of some of the synth features in the
  79 * hardware, but a woeful lack of documentation is a significant roadblock.
  80 */
  81struct voice {
  82        u16 flags;
  83#define         VOICE_IN_USE            1
  84#define         VOICE_CAPTURE           2
  85#define         VOICE_SSO_TIMING        4
  86#define         VOICE_SYNC_TIMING       8
  87        u16 sync_cso;
  88        u16 period_size;
  89        u16 buffer_size;
  90        u16 sync_period_size;
  91        u16 sync_buffer_size;
  92        u32 sso;
  93        u32 vperiod;
  94        struct snd_pcm_substream *substream;
  95        struct voice *timing;
  96        void __iomem *ctrl_base;
  97        void __iomem *wave_base;
  98        void __iomem *sync_base;
  99        int num;
 100};
 101
 102/* We need four pages to store our wave parameters during a suspend. If
 103 * we're not doing power management, we still need to allocate a page
 104 * for the silence buffer.
 105 */
 106#ifdef CONFIG_PM_SLEEP
 107#define SIS_SUSPEND_PAGES       4
 108#else
 109#define SIS_SUSPEND_PAGES       1
 110#endif
 111
 112struct sis7019 {
 113        unsigned long ioport;
 114        void __iomem *ioaddr;
 115        int irq;
 116        int codecs_present;
 117
 118        struct pci_dev *pci;
 119        struct snd_pcm *pcm;
 120        struct snd_card *card;
 121        struct snd_ac97 *ac97[3];
 122
 123        /* Protect against more than one thread hitting the AC97
 124         * registers (in a more polite manner than pounding the hardware
 125         * semaphore)
 126         */
 127        struct mutex ac97_mutex;
 128
 129        /* voice_lock protects allocation/freeing of the voice descriptions
 130         */
 131        spinlock_t voice_lock;
 132
 133        struct voice voices[64];
 134        struct voice capture_voice;
 1ci/si#L127" id="L127" class="linF1option value="v2.6.16"
	9"line136me="L129"> 129                 */
  77/* ne that dommentt"> * ft">         */
  78  79         */
 114 *SIS_SUS>voices[64];
 111
  16        int  * f_at rsnd_sis7019_ids" "> * f_at rs>capture_voice;
  93        u32  * f_dma_lassnd_sis7019_ids" "> * f_dma_lass>capture_voice;
 100};
  45
 126&qusment"alsohat do> *  In classstore  comme classcomme>"Set bt">         */
  17 s expectedion, version 2.
  78         */
  930x000       1
 109#define   93 109#define   93 132
 103&q HWate the r wave para(nd EnEnd,  "Stop,nEndot;Stop) do notuseful,
 104syd useful,
  75/="coaherang oad 9-0xfff9 s;StoperrT ad ice sE.  See the
  76
  17
  18 *
  79  70 * fng the h buffer.
  71  42       struct sng the har">u32  * f_ds_on the p_hw_infcode=sso" class="ds_on the p_hw_infcar">us) = {
  93 .   int us(u|a>) = {
 134          LE(u|a>) = {
 134          LE(u|a>) = {
 134          LE(u|a>) = {
 134          LE(VOICSTARTD_PAGES" class="sref"PCM_INFO_>VOICSTARTar">u|a>) = {
 134          LE( )7019) },
  93 .   int us(u| LE(u|a>) = {
 134             LE(u| LE()7019) },
  93 .   int us(u| LE(7019) },
  93 .   int us<40007019) },
  93 .   int us<480007019) },
  93 .   int us<17019) },
  93 .   int us<27019) },
  93 .   int us  93 .   int us<97019) },
  93 .   int us  93 .   int us<17019) },
  93 .   int us 100};
#de18"> 132
  43       struct sng the har">u32  * f_ds_"sref">chw_infcode=sso" class="ds_"sref">chw_infcar">us) = {
  93 .   int us(u|a>) = {
 134          LE(u|a>) = {
 134          LE(u|a>) = {
 134          LE(u|a>) = {
 134          LE(VOICSTARTD_PAGES" class="sref"PCM_INFO_>VOICSTARTar">u|a>) = {
  89          LE( )7019) },
  93 .   int us(u| LE(u|a>) = {
  91 a>          LE(u| LE()7019) },
  93 .   int us(7019) },
  93 .   int us<40007019) },
  93 .   int us<480007019) },
  93 .   int us<17019) },
  93 .   int us<27019) },
  93 .   int us  93 .   int us<97019) },
  93 .   int us  93 .   int us<17019) },
  93 .   int us 100};
  23
  44       void  (       struct voice *vopci, u16 ) 23
 /a>) = {
  96        void __iomem *vo-ows.   int ctrl_base;
 117
  88        vo-ows.   int  +s(ase;
  99  f(vo-ows.   int  ows.s(vo-ows.   int buffer_s) 23
 134         LE(vo-ows.   int  -s(vo-ows.   int buffer_sase;
 111
  92  03 */
 113  f(vo-ows.   int  olt; 8) 23
 134         LE(vo-ows.   int  = 8ase;
  45
 129         */
  87         (LE(vo-ows.   int  oamp; 0xffffble, VOIESOE_TABLE" class="LAY_DMA">VOIESOnc_bu+/2ids);
   { 0, }
  59
  44       void  (       struct voice *vo) 23
 /a>) = {
 113  f(vo-ows.   int fl oamp;    int VOICE_SSO_TIM)) = {
 123  87         (e *vopci, vo-ows.   int period_sids);
 134 } 08(vo-ows.   int fl oamp;    int VOICE_SYNC_TIM)) = {
 134                int  * f_yncode=sso" class="yncer_sase;
 se;
 134         /a>;    */
  78  79          *ent"> */
 134          f(vo-ows.   int vper ows.ci, vo-ows.   int period_si) = {
  91 a>          /a>        vo-ows.   int vper -s(vo-ows.   int period_size;
  91 a>          /a>  f(vo-ows.   int vper ols.ci, vo-ows.   int period_size;
 123  87 a>          /a>         (e *vopci, vo-ows.   int vperids);
 134                 08#else
 134          >          /a>         (e *vopci, vo-ows.   int period_sids);
 134                 returnds);
 134           { 0, }
 128
  89         /a>;    */
 130          ment">acthe vCSO ent"a. Sihe snt"op19 Apar,ent">/pstersloop useful,
  71          meieeing ont"atifegainst morhalfenaysohhrefagemecanuseful,
  72          meivn idert stselthstwrappave ended.
 103          ment"> */
 134         LE(vo-ows.   int sync_cso;
 134         LE( (LE(vo-ows.   int sync_bu+/pci/sis7019.PRIMVOICE__DMA"FORMAT_CSOE_TABLE" class="VOICE__DMA"FORMAT_CSOod_sids);
 134          f(vo-ows.   int sync_buffer_s / 2)ize;
 134                 LE(vo-ows.   int sync_buffer_sds);
 128
  89         /a>;    * intertoo early,nandSee the
 130          mewt"op19ll  still ncse o a plstersfewai;Stopem"ryProtece ended.
  71          ment">/ardwareaam mimumawait,"> *id ace sEuse oe asLnt"> * fDMA ended.
  72          meeng/a># p wiartup, etc..e ended.
 103          ment"> */
 134          f( 134          >       f( 134                         /E( 134                 LE( (e *vopci,  134                 returnds);
  89           { 0, }
  { 0, }
  91 a>      /a>;    * interrightthe S as, t">(har,fully)  andnt"> */
  72          meauot; lpar.eWt"op19ll ptjstt stoor thwait not n thee">sydnt"> */
 103          mthe howa>
 124          msion 2.
 125          mtnt">/* W p wiay  and behiquott">acthe vnt"> * chanensu hardware
 126          mtt;  onllytifepasare, n theewt. Wweeghe  stont"> * in --ardware
  77
  78/ useful,
  79          *ueat">/pst"o adjuaptuardwaree asL"o n>
resh adju">sync, esprsion 2.
 130          me f/psmnllo">sync rsion 2.
  71          msion 2.
  72          menfent"op19hatlessst mor9 s;Stopembehiqu,snt"op19 Apanhtarghersion 2.
 103          mtOtt"rwise, s ertknow whor thv n thee"classsamhretent"op19vesion 2.
 124          mmbeknodelayave ended.
 125          ment"> */
 134          f( 134                 LE(vo-ows.   int vper s(vo-ows.   int sync_period_s + 1ds);
 134         08#else
  89                 LE(vo-ows.   int vper s(vo-ows.   int sync_period_s + LE(  { 0, }
  91 a>       f(vo-ows.   int vper ols.ci, vo-ows.   int buffer_s)) = {
#2821">  91 a>          /a>         (e *vopci, vo-ows.   int vperids);
 123  87 a>      LE(vo-ows.   int vper s<0ds);
 134         } 08#else
 134             /a>         (e *vopci, vo-ows.   int period_sids);
 se;
 134         LE(vo-ows.   int sync_ + LE(vo-ows.   int sync_period_sds);
 134          f(vo-ows.   int sync_buffer_size;
  89                 LE(vo-ows.   int sync_buffer_sds);
 134         LE(vo-ows.   int sync_ s(  91   { 0, }
 132
  93 LE(s">sync_elapsesnd_card" class="sref">s">sync_elapses4"> (LE(vo-ows.   int    { 0, }
  45
  44       void  (LE(    void  * f_44vopc       struct voice *vo) 23
 /a>) = {
  93        int  * fbiinlock_t"dma_lasbiier_sase;
  59
  93 while( * f_44vo)) = {
  91 a>      /  int  * fbiinlock_t"dma_lasbiier_s s( * f__ff74"> (LE( * f_44vo)ase;
  91 a>      LE( * f_44vouows.ows.s();
 123  87        voi+s(;
 134         LE( (e *vo)ase;
 134         LE(vo++ase;
  96   { 0, }
   { 0, }
 128
  44LE(    void  * ine=voice" class="ds_nt"> * in4"> (       int  * f"+code=irq" class="+c4"> ,ubstream *vo) 23
 /a>) = {
  91        struct voice *voase;
  92 unsigned long    int  * f"code=sso" class=isync_ s(voase;
 113        struct voice *voase;
 134 LE(    void  * f   7">vopci,  * f_44voase;
  45
 129         * fDMAont"> * ins,nandWweedon"op19t enablnotnythtt"rnt"> */
  77 * ins. But,tt; ifepossiblno p wenotn nt"> * in4""> */
  78 * in us,nso el"conparttnyth        */
  79   snt"op19 Ap#39;expect">/p p abstrefalselymmla"comme
 130  *nensuommeendlesssloope ended.
  71  ment"> */
 113   void  * f   7">vo s( * f  l4"> (e *vo)ase;
  93 LE( * f   7">vo oamp;s(vo |a>) = {
 134         LE(voase;
 134  f( * f   7">vo) 23
 134         return LE( * fIRQCNONE">voase;
 117
  93 do) = {
  89         /E( * f_44vous( * f  l4"> (e *vo)ase;
 134          f( * f_44vo)) = {
  91 a>          /a>         (LE( * f_44vopcLE(vo)ase;
  91 a>          /a>    int  * foutl4"> (LE( * f_44vopcLE(vo)ase;
 123  87   { 0, }
  { 0, }
 134         /E( * f_44vous( * f  l4"> (e *vo)ase;
 134          f( * f_44vo)) = {
 134             /a>         (LE( * f_44vopcoamp;LE(vo[32])ase;
 134                    int  * foutl4"> (LE( * f_44vopcLE(vo)ase;
  89           { 0, }
  { 0, }
  91 a>      /  int  * f_44 * f_44vous( * f  l4"> (e *vo)ase;
  91 a>       f( * f_44vo)) = {
 123  87 a>      LE(vous(c"+code=voice" class="sref">c"+cod">voase;
 134         a>       f(vo-ows.   int vo) 23
 134          91 a>      /  int  * f_sref">s">sync_elapsesnd_card" class="sref">s">sync_elapses4"> (LE(vo-ows.   int  se;
 134                 LE( * foutl4"> (LE( * f_44vopcLE(vo)ase;
 134           { 0, }
  59
 134         LE( * foutl4"> (LE( * f   7">vopci, vo)ase;
  91 a>      /  int  * f   7019_ids" "> * f   7">vo s( * f  l4"> (e *vo)ase;
  91 a>      LE( * f   7">vo oamp;s(vo |a>) = {
 123  87 a>      LE(voase;
 134 } while( * f   7">vo)ase;
  45
 134 return LE(voase;
   { 0, }
 128
  44LE(    void  (unsigned        int  * fratdode=irq" class=rhenntvo) 23
 /a>) = {
  91 LE(    void  ase;
 132
  93 L      
 124  *sohhrefeauot;... nevncw wless,tt; works welle ended.
 125  msion 2.
 126   nWApspecie vnase 44100nandW8000 sihe shhrefommewith adjuequ4
  77
  78
  79  *solsouapt> * fequ4
 130  ment"> */
  91  f(
  91 a>      LE(  s<0xeb3ase;
  93 08(
 134         LE(  s<0x2abase;
  93 08(
 134         LE(  s<0x1000ds);
 134 08#else
 134         LE(  s<((BLE();
  89 return LE( ase;
   { 0, }
 111
#3821">  44       void  (       struct voice * /a>) = {
 134 L       */
 134  f( 134         LE( * f"dlencd_dma_add7">vo s( (LE(vop 23
 134                                         LE(vo[0]p 23
 134                                         4096pci,  * fPCI_DMA"TODEVICE">vo)ase;
  89 LE(   { 0, }
 111
  44       void  (       struct voice * /a>) = {
 134 L       */
  89 LE( 134  f( 134         LE( (LE(vop LE( * f"dlencd_dma_add7">vo, 4096p 23
 134                                 i,  * fPCI_DMA"TODEVICE">vo)ase;
   { 0, }
  { 0, }
  44       void  (       struct voice *voice *vo) 23
 /a>) = {
 123 unsigned long    int  * f"+code=flags" class="sref">flase;
  { 0, }
  89 LE( (oamp;LE(vop LE(fl)ase;
 134  f *vo-ows.   int vo)) = {
 134         LE( (e * 134         LE(vo-ows.   int vo-ows.   int fl oamp;s<~(e * * fVOICE_IN_USE">vo | LE( * fVOICE_SSO_TIMING">vo |a>) = {
  89                                         i,  * fVOICE_SYNC_TIMINGer_s)ase;
 134         LE(vo-ows.   int vo s(flase;
  91   { 0, }
 113   void vo-ows.   int fl oamp;s<~(e * * fVOICE_IN_USE">vo | LE( * fVOICE_SSO_TIMING">vo | i,  * fVOICE_SYNC_TIMINGer_s)ase;
 113 LE( (oamp;LE(vop LE(fl)ase;
   { 0, }
  45
  44       struct voice * (       struct voice * /a>) = {
 134 L       */
  89        struct voice *voase;
 134        int  * f"e=voice" class=i">voase;
 111
 113 nt">BLE(vo s<0d    int  * f"e=voice" class=i">vo ols.c64d    int  * f"e=voice" class=i">vo++)) = {
  93 113   void vous(vo[   int  * f"e=voice" class=i">vo]ase;
 134          f *vo-ows.   int fl oamp; i,  * fVOICE_IN_USE">vo) 23
 134                 continuease;
 134         e *vo-ows.   int fl |s( * fVOICE_IN_USE">voase;
 134         goto LE(voase;
  93   { 0, }
  89 LE(vous(flase;
  { 0, }
 LE(vo: { 0, }
  91 return LE(voase;
   { 0, }
  { 0, }
  44       struct voice * (       struct voice * /a>) = {
 134        struct voice *voase;
 134 unsigned long    int  * f"+code=flags" class="sref">flase;
  59
  89 LE( (oamp;LE(vop LE(fl)ase;
  91 LE(vous( (e * 113   void  (oamp;LE(vop LE(fl)ase;
 se;
 134 return LE(voase;
   { 0, }
 se;
  44       int  * f"ds_alloc_t"comm_"+code=voice" class="ds_alloc_t"comm_"+cod4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * 134                                        struct shw_paramse=voice" class="sref">shw_params">voice *vo) 23
 /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e *  91        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
  91        struct voice *vois(vo-ows.   int vods);
 123 unsigned        int  * f"+code=period_size" class="sref">period_sp LE(buffer_sds);
 134 unsigned long    int  * f"+code=flags" class="sref">flase;
 134        int  * fneedesnd_card" class=needes">flase;
 se;
 134 L       */
  78 * f"sref"> channel"op19sont"> * insnt"> */
  79  *stoa> * f"sref"se ended.
 130  ment"> */
  91 LE(period_s s( (e *vo)ase;
 113   void buffer_s s( (e *vo)ase;
 113 LE(fl s<(LE(period_s !s(buffer_s oamp;oamp;se;
 134         a>      LE(period_s !s<(LE(buffer_s / 2))ase;
  45
 134  f *fl oamp;oamp; !LE(vo-ows.   int vo)) = {
 134         LE( (oamp;LE(vop LE(fl)ase;
 134         LE(vo-ows.   int vous( (e *  89          f *vo-ows.   int vo)se;
 134                 LE( (e *  91 a>      /  int  * f_pin"unlock""+crestorde=voice" class="pin"unlock""+crestord4"> (oamp;LE(vop LE(fl)ase;
  91 a>       f(vo-ows.   int vo) 23
  93 113         return -   int flase;
 134         LE(vo-ows.   int vo-ows.   int   93 } 08(fl oamp;oamp; LE(vo-ows.   int vo)) = {
 134         LE( (LE(vo)ase;
 134         LE(vo-ows.   int vo s(flase;
  93   { 0, }
  59
 134 return 0ds);
   { 0, }
#4818"> 132
  44       int  * f"ds_play a p_opene=voice" class="ds_play a p_open4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e * 134        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
 134        struct voice *voase;
 128
  89 LE(vois( (e * 134  f(vo) 23
  91 a>      return -   int voase;
 132
 113 LE(vo-ows.   int  134 LE(vo-ows.   int vois(voase;
  89 LE(vo-ows.   int vois(voase;
 134 struct shw_constra   _commaxsnd_pcm" class="sref">shw_constra   _commax4"> (e *vop LE(vopse;
 134                                         9, 0xfff9)ase;
 134 struct shw_constra   _commaxsnd_pcm" class="sref">shw_constra   _commax4"> (e *vop LE(vopse;
  89                                         9, 0xfff9)ase;
  89 LE(s"et_syncsnd_pcm" class="sref">s"et_sync4"> (e *  91 return 0ds);
   { 0, }
 se;
  44       int  * f"ds_"ubstrea=_closde=voice" class="ds_"ubstrea=_closd4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e * 134        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
 134        struct voice *vois(vo-ows.   int vods);
  59
  89 LE( (LE(vo)ase;
  91 return 0ds);
   { 0, }
 se;
  44       int  * f"ds_play a p_hw_paramse=voice" class="ds_play a p_hw_params4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * 134          91 a>      134        struct shw_paramse=voice" class="sref">shw_params">voice *vo) 23
 /a>) = {
  91 return struct slib_malloc_pagfse=voice" class="sref">slib_malloc_pagfs4"> (e * 134                                 i,  (e *vo))ase;
   { 0, }
  { 0, }
  44       int  * f"ds_hw_frene=voice" class="ds_hw_fren4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
  93 return struct slib_fren_pagfse=voice" class="sref">slib_fren_pagfs4"> (e *   { 0, }
  45
  44       int  * f"ds_p">splay a p_preparne=voice" class="ds_p">splay a p_preparn4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
 134        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
  89        struct voice *vois(vo-ows.   int vods);
  89        void voice *vois(vo-ows.   int vods);
  89        void voice *vois(vo-ows.   int vods);
 113   void     void ( * fdma_add7">vo,    int vo,    int  p LE(vods);
 113 LE(  LE(vods);
  { 0, }
  89 L       that> * f"arameters nt">thisnt"> */
 126   n"ubstrea= dop#39;changApanEus while we"op19"> programcomme * fHWe ended.
  77 */
 134 struct 
  89  f *sformat_widthsnd_pcm" class="sref">sformat_width4"> (e *vo-ows.   int 
 134         LE((vods);
  91  f(sformat_signedsnd_pcm" class="sref">sformat_signed4"> (e *vo-ows.   int 
  91 a>      LE((vods);
  89  f *vo-ows.   int 
 134         LE((vods);
  45
  89 L      a "dngldf"sref" "sr "sref",Wandnt"> */
  77  78 */
  89 LE( * fdma_add7">vois(vo-ows.   int  * fdma_add7">vods);
  89 LE(vois(vo-ows.   int buffer_s - 1ds);
  91 LE(vois(voi| i, voi| i, vods);
 113   void vods);
 se;
 134  f *vo-ows.   int period_s ss<(LE(vo-ows.   int buffer_s / 2))) = {
 134         LE(voi|s(vods);
  89 } 08 *vo-ows.   int period_s !s(vo-ows.   int buffer_s)) = {
 134         LE(vo-ows.   int fl |s( * fVOICE_SSO_TIMING">vods);
 134         LE(vo-ows.   int vois(vo-ows.   int period_s - 1ds);
  89         LE(vo-ows.   int period_s s(vo-ows.   int period_sds);
 134         LE(vo-ows.   int buffer_s s(vo-ows.   int buffer_sds);
 111
  91 a>      LE(voioamp;s<~i, vods);
  93 113 LE(voi|s(vods);
 134           void vo-ows.   int period_s - 1) ols.ols.c16ds);
  93 }s);
 se;
 134 LE( is( (e *vo-ows.   int );
 128
  89 L       readystoago, set up> * f"hannele ended.
 130  ment"> */
  91 LE( (e *(voi+();
 113   void  (e * * fdma_add7">vo,    int voi+( * fSIS_PLAY_DMA"BASEer_s)ds);
 113 LE( (e *vo,    int voi+();
 134 LE( (e *voi+();
  45
 134 nt">BLE(vo s<0d    int  * freme=voice" class=rem">vo ols.cLE(vod    int  * freme=voice" class=rem">vo += 4) 23
 134         LE( (0p LE(voi+(vo)ds);
 128
  89 LE( (e *(voi+(vo)ds);
  89 LE( (e * iols.ols.c16p LE(voi+(vo)ds);
  91 LE( (e *);
#5821">  91 a>       91 LE();
  93 113         LE();
 134         a>      LE(voi+(vo)ds);
  45
  89 L       */
 134 LE( (e *vo)ds);
 128
  89 return 0ds);
 }s);
 111
  44       int  * f"ds_p">strigge7019_ids" "> * f"ds_p">strigge74"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * * fcmdsnd_pcm" class=cmd">vo)111
 /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e *  89 unsigned long    int  * ficode=sso" class=io">vois(vods);
 134        struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice *vods);
 134        struct voice *voase;
 134      ce * ase;
  89        int  * f"tartomme=voice" class="tartomm4"> ase;
  89 LE(    void vo s<0dse;
  91 LE(    void  [2] s<{ 0, 0 }dse;
 132
 113 L       */
 126   n"ubstrea=s,Wande * fHWswill only "tart/stop> * findicated "srefsnt"> */
  77 126   ent"> */
 134  witch>BLE(vo)) = {
 134 casd LE( :a>) = {
 134 casd LE( * fSNDRV_PCM_TRIGGER_PAUSE_RELEASE4"> :a>) = {
  89 casd LE( :a>) = {
  91 a>      /  int  * f_tartomme=voice" class="tartomm4">  s<1ds);
  91 a>      breakds);
 134 casd LE( :a>) = {
 134 casd LE( * fSNDRV_PCM_TRIGGER_PAUSE_PUSH4"> :a>) = {
 134 casd LE( :a>) = {
 134         LE(  s<0dse;
 134         breakds);
 134 default:a>) = {
  89         return -   int  ase;
  89 }s);
 111
 113   void sgroupsfor_each_s="ryod_size" class=_sref">sgroupsfor_each_s="ry4"> (e *vo,    int   93 113 L       it is nt">us... ment"> */
 134           void   s(s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e *voids);
 134          f *  !s( 134         134 contomueds);
 s);
 134         LE(vo s(vo-ows.   int vo-ows.   int vods);
  89          f *vo-ows.   int fl oamp; LE() = {
 134                 LE(vo |s<1iols.ols.ce *vo-ows.   int vods);
  91 a>              LE(vo s(vo-ows.   int vods);
  91 a>      }s);
 se;
 134                 */
  77
 126          *ent"> */
 134          f *vo)111
 134                   void  [e *vo-ows.   int vo / 32] |s<1iols.ols.cBe *vo-ows.   int vo oamp; 0x1fids);
  59
 134         LE(strigge7_donde=voice" class="sref">strigge7_dond4"> (e *vo,    int   91 }s);
 132
  89  f * i) = {
 134          f *vo)111
 134          91 e * (e *vo,    int voi+( * fSIS_RECORD_START_REGod_sids);
 134          f * [0])111
 134                 e * (e * [0],    int voi+( * fSIS_PLAY_START_A_REGod_sids);
 134          f * [1])111
  89                 e * (e * [1],    int voi+( * fSIS_PLAY_START_B_REGod_sids);
  89 } 08) = {
  91 a>       f *vo)111
  91 a>       91 LE( (e *vo,    int voi+( * fSIS_RECORD_STOP_REGod_sids);
  93 113  f * [0])111
 134         a>      LE( (e * [0],    int voi+( * fSIS_PLAY_STOP_A_REGod_sids);
 134          f * [1])111
 134         134 e * (e * [1],    int voi+( * fSIS_PLAY_STOP_B_REGod_sids);
 134 }s);
 134 return 0ds);
   { 0, }
  { 0, }
  44LE(suframes_td="L132" class="sref">suframes_t4"> 1LE(spointe7019_ids" "> * f"ds_p">spointe74"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
  93        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
 134        struct voice *vois(vo-ows.   int vods);
  93    int     void vods);
 se;
 134 LE(vois( (e *vo-ows.   int voi+();
 134 struct voioamp;s<0xffffds);
  89 return   void vods);
 }s);
 111
  44       int  * f"ds_capture_open019_ids" "> * f"ds_capture_open4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e * 134        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
 134        struct voice *vois *vods);
 134 unsigned long    int  * f"+code=flags" class="sref">flds);
 128
  89 L       */
 130  m at> * fmoss=", but it could "upportfmoree ended.
 126   ent"> */
#6823"> 113   void  (oamp;e *vo,    int flids);
  89  f *vo-ows.   int fl oamp; LE( * fVOICE_IN_USEod_s)111
 134         e *vois(flds);
 134 08);
 134         LE(vo-ows.   int fl |s( * fVOICE_IN_USEod_sds);
 134 LE( (oamp;e *vo,    int flids);
 128
  89  f(vo)111
 134         return -   int );
 111
 113   void vo-ows.   int  113 LE(vo-ows.   int vo s(vods);
 134 LE(vo-ows.   int (vods);
  93    int vo-ows.   int ( [0]-ows.   int  *);
 134 struct slimit_hw_ratdde=flags" class="sref">slimit_hw_ratdd4"> (e *voids);
 134 LE(shw_constraint_minmaxe=flags" class="sref">shw_constraint_minmax4"> (e *vo,    int vo,s);
 134                                         9,<0xfff9ids);
  89 LE(shw_constraint_minmaxe=flags" class="sref">shw_constraint_minmax4"> (e *vo,    int vo,s);
 134                                         9,<0xfff9ids);
  91 LE(s"et_syncsnd_pcm" class="sref">s"et_sync4"> (e * 113 return 0ds);
 }s);
  { 0, }
  44       int  * f"ds_capture_hw_"aramse=voice" class="ds_capture_hw_"arams4"> (       struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * 134         134                        struct shw_"aramse=voice" class="sref">shw_"arams">voice *vo)111
 /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e *  89        int  * frcsnd_pcm" class=rc">vods);
  { 0, }
  91 LE(vo s( (e * [0],    int );
  91 a>                                         int  (e *vo)ids);
  89  f *vo)111
 134         goto e *vods);
  45
 134 struct vo s(slib_malloc_"agdde=flags" class="sref">slib_malloc_"agdd4"> (e * 134                                    int bytdde=flags" class="arams_"sref">bytdd4"> (e *vo)ids);
 134  f *vo ols.c0)111
  89         goto e *vods);
  { 0, }
  91 LE(vo s( (e *vo)ds);
 132
 e *vo:a>) = {
 134 return   void vods);
 }s);
 se;
  44     LE( (       struct voice *vo,s);
 134                                        struct s"ubstrea=snd_pcm" class="sref">s"ubstrea=">voice * /a>) = {
 134        struct voice *s"ubstrea=_chipsnd_pcm" class="sref">s"ubstrea=_chip4"> (e *  91        struct srune assnd_pcm" class="sref">srune as">voice *vois(vods);
  91        struct voice *vo s(vo-ows.   int vods);
  89      LE(voice *vo s(vo-ows.   int vods);
 134      LE(voice *vois(vo-ows.   int vods);
  93    int  1   int period_size" class="sref">period_s,(period_sds);
 134 struct     void (vo,    int  ds);
 134 LE(    void vo,    int vo,    int vods);
 128
  89 L       */
 130  m sommle "agd of silencee ended.
 126   ent"> */
 113   void period_size" class="sref">period_sis<4096 /    int vo-ows.   int vods);
 113 LE(period_size" class="sref">period_si/s(sformat>period_size" class="sref">sformat>peri4"> (e *vo-ows.   int );
 134 LE(period_sis(period_size" class="sref">period_sds);
  45
  89 L       */
 130  m  * f"sref" we"op19re clockommeout. 12 samples seemsstoagive a gof"">"> */
 130  m delaye ended.
 130  m ended.
 130  m We wantstoaspread our inte7rupts  *roughaut> * fvirtual "sref", ended.
 126    so> *at we don"op19t endeup with two inte7rupts backstoabacksat> *  ended.
 126    ende--
 126    clockomme"sref" peri so> *at  * flast "sref" is at least a fourth ended.
 126   nof a full "sref"e ended.
  77 126    This is all moot  f
 130  ment"> */
 134 struct vois(vo-ows.   int period_si+ 12ds);
  89  fvoiows. LE(period_si) = {
 134         LE( 1   int vo s(voio#37. LE(period_sds);
  91 a>      /  int  * fu id="L116" class="164"> 1   int vo s(period_si/ 4ds);
 132
  93  89  fvo oamp;oamp; LE(vo ols.ce *voi) = {
 134         a>      LE( 1   int vo s(voiL1227" ida>);
 [o s(vo s();
 (       strucU147ef="sound7pci/sis7609.c#L1296" id=7L69" 76 int vo / 32]/e=voice"int  (       strucU147eref="+cod76019.c#L706" id="L70" c7ass="76nt voi+(> 132
 111
  44 * f"ds_c7pture7open019_ids" "> * f"ds_capture_open4"7 (       7truct s"u7strea77f=hw_"aramse=voice" c77" id="L38" class=1"line17name=7328"> 1"line" 7name=7618"> 132
 (       strucU1474"> 134        struct  *vo)111
7ref="dse=7oice" class="dser_s s(<77ref="sound/pci/sis760109.c#L1077" id="L47" claT="com7ame="lass=1"l">  foid nsid> 126voice  ment"ass=disabl> 126m> */
vois 134          f *vo)111
  4pci/sis7709.c#L1297" id="L59" class="line" 7name=7589">  89  f (       strucU1474f="sound7 L      vo-oass=1"line17name=7328"> 1"line" 7name=7618"ize" class=2"+code=period_s14nt  (       strucU1474ref="+codannelnt"> */
period_si+ 12ds);
7 id="L104" class="line" 7ame="703nded.
 * f"ds_capture_open4"7(oamp;e *linehronization,=75code=voice" class="sref">vo)111
fl oamp7 LE */
flds  77vo)111
 134         LE<7a>(  93 134 }s);
 (       strucU147ref="+cod7=flags" class="sref">fl 7svo,.c#L1047 id="L135" class="line" 7ame="7353">  93  89     >      LE(voice *7(oamp;e *  93  4pci/sis7709.c#L1297" id="L59" class="line" 7name=7589">  89  f (       strucU147">  89(  93  89  f  89 1"line17name=7445">  4pci/sis7709.c#L1297" id="L59" class="line" 7name=7589">  89  f (       strucU147"ref="+codis76019.c#L906" id="L90"7class78 assnd_pcm" class=rune as">v.c#L1047 id="L135" class="line" 7ame="7353">  93
  4pci/sis7709.c#L1297" id="L59" class="line" 7name=75895
v.c#L1047 id="L135" class="line" 7ame="7353">  93  4">  89  f (       strucU147"> 113 (e *  93vods);

  93 1"line" 7name=7618"lss=1"line17name=7328"> 1 id="L46" class=1"line17ame="7469)+code=fl7taode=irq" class="rivatd7data"7vo s(  93period_si+ 12ds);
period_si+ 12ds id="L46" class=1"line17ame="7469)=NULLe=v7 class=hwod_sis(<7 href79w_"aramse=voice" class="ds_capture_hwhwsnd_pcm7 class=hwod_s.   int  126<26   ent"vo)111
7(e * > */
 (e * 126 */
 130 +code=voice" class="sref">vo)111
 (e *vLE( 134 1ids);
);
 134 LE(( id="L46" class=1"line17ame="7468"line" 7a8e="7013"> }s);
  89       c#L1237" id="L43" class=1"line17name=7413"> 113 LE(period_size"  == 1 id="L130" class="line" 7ame="738<3ine" 7a8eaode=irq" class="rivatd8715.c80ls.ce *(  struct  id="L46" class=1"line17ame="7468"4ine" 7a8eclass=hwod_sis(<8pture8hw_"aramse=voice" class="ds_capture_h8_"arams4"8 (       struct  ds);
  93vods);
 (       strucU148amse=voic8" class="sref">shw_"aram8">voi80le=voice" class=control">vo,ta4"> ds);
  134eiTR_  id="L46" cla7> (      /sis7709.c_constrai7t_m8     80 (e *  93vods);
 (      /sis7709.c_>  89(  93vods);
 (      11
vods);
  91 LE8/a>(<81/sis76019.c#L716" i7="L91" c7374"> 134 LE( 134 LE);
 8h, now a4"figurlass63( */

fl oamp7 LE +code=voice" class8ut">vods<8a>);
period_sdswritess=control">vo,twrites73 1ids);
 134 struct voioamp;8ass="line8 7ame="7164"> 134 st8uct <81ruct vo,twrites73 1ids);
 12_dma_addtrea=">voice *s> 12_dma_addt_sp LE( 134voioamp;8a"> (     sref">slib_malloc_"agdde8flags8 class="sref">slib_malloc_"agwritess=control">vo,twrites73 1ids);
 ds);
voioamp;8a7> (     ef">bytdde=flags" class=8arams81 (e *vo,twrites73 1ids);
 134Sss_Ess href=cscode=sso" class=csc">voioamp;8a8> (     
vods<8a>);
 128
 128
period_size"  == 1 id="L130" cass="line8 7ame="7291">  91 LE8/a>(<82vo s(vo,twrites73 1i0ass=1"line17name=ref=wave_basde=voice" class=wave_basd"ound/pci/sis7609."> 128
voioamp;8( 8ass="line8 7ame="7293"> e *(vo,twrites73 1ids);
voioamp;8(a>
vo,twrites73 1ids);
 134 LE( 111
voioamp;8(t">vods<8href="sound/pci/sis7715.8#L10482ize" class="sref">period_sdswritess=control">vo,twrites73 1ids);
_FIRST_SAMPL" class="line" 7a84"WAVELCHANNEL"COiTRO>_FIRST_SAMPL"" cl);cscode=sso" class=csc">voioamp;8(ss="line8" 7ame="7226"> se;
<8 href825o s(period_sdsa84"WAVELCHANNEL"COiTRO>_AMP_ENABL" class="line" 7a84"WAVELCHANNEL"COiTRO>_AMP_ENABL"" cl);cscode=sso" class=csc">voioamp;8("> (      7ame="7273">  44   8 LE_INTERPOLATE_ENABL" class="line" 7a84"WAVELCHANNEL"COiTRO>_INTERPOLATE_ENABL"" clacscode=sso" class=csc">voioamp;8(7> (     ="ds_pre"are_t"comm_"+co84"> (82i/e=voice"int  class="line" 7a84"WAVELCHANNEL"COiTRO>oundf=cscode=sso" class=csc">voioamp;8(8> (     ef">s"ubstrea=snd_pcm" c8ass="8ref">s776019787619.c#L1226 id="L122" c8lass="lin8" 7ame="7304"> 134  8     82"L110ls">vods);
voi8e *s"ubstrea=snd_pth=1a> * 134 LE * /a>) = {
srune as">voice *<8 href8rune a7ls.ce *voice *vo s(vods);
  91        struct voice8/a> *);
vods<8/a> *vois(vo-ows.   int   93period_si+ 12ds  89     >      LE(period_size" class8"sref8>period_s,(vo,    int voicedma_addt_sp LE( ds href=__iome=snd_pcm" class=__io8 "> (     ormatd="L132" class=form8ter_s8 LE(voiL1227" ida>);
 href=__iome=snd_pcm" class=__io8 7> (     "sref"e=voice" class=""s8ef"">8o,    href=__iome=snd_pcm" class=__io8 8> (     17name=7389">  89 L 8    <83>( +code=voice" class8Wande"sre8" as large as we c   giv8n ant83="line" 7name=7530"> 130 */

 +code=voice" class8="sound/p8i/sis7709.c#L1227" id="L82" cl84href="+code=v7ice" 79"+cod4"pcm" class=rune as">vLE(period_s8s<4096 /    int );
 134 1ids);
);
 134 LE(period_s8/s( id="L46" cl>period_s8s(8eriod8size" class="s class="line" 6name=132" class=formatnamoa> 1ids);
);
 134 LE(  89 L 8    <845o s(  id="L46" cl>"> (     just a bit behinde * fen8eofnt8> */
  89       c#L1237" id="L43" class=1"line17name=7413"> 113 LE(period_size"  == 1 id="L130" clockommeo8t. 12 samples seemsstoag8ve a 847609.c#L1286"7id="L77=iopor"d/pci/e=ref=qucode=period_sizLE(  struct  id="L46" cla href="s8und/pci/sis7709.c#L1297"8id="L84an classAtill nSet our initial "sref8"sound/pc8/sis77019.c#L507" id="L58" cla84 (e *);
 id="L46" clinte7rupt8  *roughaut> * fvirtual 8sref"85/sis76019.c#L716" i7="L91" c=eis7719.c#L1077" =ei/line i
  4pci/sis7709.c#L1297" id="L59" class="line" 7name=75895
vods);
 ds);
/134ref=cscodLOOP/pci"N 134 st=6874">  st=687_sp Ecscode=sso" MON  id="L46" cliperiod_s8refcts of any jitte7. Ad8ust o85 *at  *8flast "sref" is at least8a fou85class="rivatd7href="sound/pci/sis7709.cf077" id=veass= morlasssnline"span claspa1"l">  fo"linclashavsid> 1268e="6aandler i7 id=1to 7709. 7591"> 1span cla O"> rwise,30 126 126e="6ss63<> *( */

 +code=voice" class8="sound/p8i/sis7709.c#L1287" id="L88" cl857*/
  89      LE((voice *vo,s  91        struct srune assnd_pcm" 8"">voiows8 LE(vo s(vo,ta4"> ds);
 steiTR_  steiTR_  id="L46" cl 1   int 8a href=quarte7_"sref"e=v8ice" 8lass=quarte7_"sref"">v8f="so8nd/pci/sis7719189">  89       c#L1237" id="L43" class=1"line1" 7ame="7353">  93
  4pci/sis7709.c#L1297" id="L59" class="line" 7name=75895
period_size"  == 1 id="L130" cass="line8 7name=7693">  93  88 86atd4"> (e *vo,ta4"> ds);
 steiTR_   steiTR_  id="L46" cl > *at  *8mp;oamp; LE( 8   int (<8pture8hw_"aramse=voice"o s);86ruct vo,twrites73 1ids);
  93 struct  struct srune assnd_pcm" 8="sound/p8i/id="L" c.5;
<7609.c#L1846" i86class="sref">slib_malloc_"agwritess=control">vo,twrites73 1ids);
voicedma_addt_sp LE(  93 stBAame=6874"> 134 stBAamruct srune assnd_pcm" 8="sound/p8i/e=voice"int  *vo,twrites73 1ids);
 ds);
  93 stCOiTRO> class="line" 7a84"N 134 stCOiTRO>ruct srune assnd_pcm" 8=is (    8  strucU147eref="+cod76089.c#L86 */
 +code=voice" class8iopor"d/p8i/e=voice"i1"> 111
<8 href87/sis76019.c#L716" i7="L91" cd="L=irq" class=deltd="L=73 1ids);
  93srune assnd_pcm" 8ass="line8 7ame="7273">  44 * f"ds_c7pture7open019_ids" "> 8 f"ds_cap8ure_open4"7 (       7tru8t s"uss="linf="+code=period_si);
7 id="L104" c4"> (    8  strucU1474"> 134  8     8truct 776019787619.c#L1226 id="L122" c8=record">8o)111
7ref="dse=7oic8" cla87_sis(<8pture8hw_"aramse=voice"cozee * f8refcts of a>voice();
);
7ls.ce *. ida>);
vods);
voioamp;8"sref">vo8111
);
  89     >   70> une as">vods);
  89     >  h=vos7719.c#L1170> " clacscode=sso" class=csc">voioamp;8"isvods);
voioamp;8""> (    8  strucU1474ref="+codann8lnt">8*/
);
 132
vods);
 132
h=voiaower rvoioamp;8lass="lin8" 7ame="703nded.
8a hre8="sound/pci/si. ida>);
     >  e" fre sounas">vods);
     >  h=voe" fre " clacscode=sso" class=csc">voioamp;8lss="line8 6ame="6227c#L626" i7="L82" cl881sound/pci/si. ida>);
 134 LEvods);
 134 LEvoioamp;8lf"ds_cap8ure_open4"7(oamp;e *8a hre8="dse=voice" c. ida>);
vods);
voiceh=voii/strigget" clacscode=sso" class=csc">voioamp;8l"> (    8111
);
 134 LEvods);
 134 LEvoioamp;8lrecord">8i/sis7709.cf=NULLe=v7ice8 clas8=NULL"}="+code=period_si);
7 id="L104" c"sref">vo8111
 (    8  strucU147ref="+cod7=fl8gs" c8ass="s();
 * *);
7ls.ce *7(oa8p;e);
vods);
 * *voioamp;8lis  89);
  89     >   70> une as">vods);
  89     >  h=vos7719.c#L1170> " clacscode=sso" class=csc">voioamp;84"> (    8  strucU147"ref="+codis78019.c88/
);
vods);
voioamp;8ass=1"lin817ame="7469);
);
 132
vods);
 * 132
h=voa> *voioamp;8ass="line8  strucU147"> 113);
     >  e" fre sounas">vods);
     >  h=voe" fre " clacscode=sso" class=csc">voioamp;8ass=1"lin817ame="7469)oamp;e);
 134 LEvods);
 * 134 LE *voioamp;8a"> (    817ame="7469)+code=fl7tao8e=irq893sound/pci/si. ida>);
vods);
voiceh=voii/strigget" clacscode=sso" class=csc">voioamp;8ass=1"lin817ame="7469)=NULLe=v7 cl8ss=hw894sound/pci/si. ida>);
 134 LEvods);
 134 LEvoioamp;8 class="d8_capture_hwhwsnd_pcm7 cl8ss=hw8d_s.  }="+code=period_si);
7 id="L104" c"sref">vo8111
7(e<8a> *<8 href="+code=period_si);
7 id="L104" c"=">voice8i/sis7709.c_constrai7t_m8nmax48> (es"ubstrea=s__dev077"> 134 LE);
(period_size"  == 1 id="L130" c="sound/p8i/sis7709.c_>  89 *vo8111
 (e *(s"ubstrea=src353">  93 113 * f"ds_c7pture7open019_ids" "> 9ass=1"lin917ame="7468"line" 7a8e="9013">90"dse=voice" c7ass="7ser_s-ows.   in09.W7shavs 64i7 id=s,s=1"lss63driver curr   ly records froman class="comment"> +code=voice" class9lass="lin9" 7ame="738<3ine" 7a8eao9e=irq90sref">fl oamp7 LE( */
flds  77  93vods);
);
 1ids);
<7aro);
flds"SiSe" c"  77srune assnd_pcm" 94"> (    9  strucU148amse=voic8" c9ass="90 */
  93period_size"  == 1 id="L130" 9a7> (    9 /sis7709.c_constrai7t_m9     907609.c#L1286"7id="L77ss="linef">s"ubstrea=src353">  93 (    9 /sis7709.c_>  89 (    9 11
 *(irq" class=deltci/1227="L14" class="line" href="sound/pci/sis7609.c#L1346" id="L94" cas">vods);
  91 LE9/a>(<91/sis76019.c#L716" i7="L91" cLE);
(irq" class=deltci/1227="L14" class="line" irq" class=delt);
flds"SiSe" c"  77srune assnd_pcm" 9((irq" class=deltci/1227" id="L45" class=1">(irq" class=deltci/1227="+code=period_si);
7 id="L104" 9
(<.et);
(irq" class=deltci/1227);
 13BACK class="line" 7aNDRV_PCM_STREAM"> 13BACK1227);=quar29" class="linee=voiaower r srune assnd_pcm" 9(ss=1"lin9a>);
period_sds/sis7719.et(<.et);
(irq" class=deltci/1227);
srune assnd_pcm" 9(class="d9 7ame="7164"> 134 st9uct <91a href="sound/pci/id="L" c.5;
 (    9sref">slib_malloc_"agdde9flags9 class="sref">sass="7ser_s-ows.   in09.cry30    ende-- (    9ef">bytdde=flags" class=9arams91 (e * */
 (    9
 130 +code=voice" class9ut">vods<9a>);
);
(irq" class=deltci/1227);
 stTYPE_DEV" clacscode=sso" class=csc">voioamp;9ass="line9 7ame="7291">  91 LE9/a>(<92vo s();
 , 64*1024, 128*1024 srune assnd_pcm" 9( 9ass="line9 7ame="7293"> e *s"uss="linf="+code=period_si);
7 id="L104" 9(a>
vods<9href="sound/pci/sis7715.9#L10492_sis(<8pture8hw_"aramse=voice9(ss="line9" 7ame="7226"> se;
<9 href92une as"ubstrea=snd_pac97_rwirq" class=delthd_pac97_rw73 1iLE(s"ubstrea=srea=c353">  93vo,    int  1ids);
<7md1227f">period_size"  == 1 id="L130" 9("> (    9 7ame="7273">  44   9 LE * (    9="ds_pre"are_t"comm_"+co94"> (92i/e=voice"int7" id="L4longint _ADC_RATEe=flags" class=="L43" class=1"line1ioporss7719.c#L1077" iapors1227="+code=period_si);
7 id="L104" 9(8> (    9ef">s"ubstrea=snd_pcm" c9ass="928/e=voice"int7" id="L47horsref">s"ubstrea=svalirq" class=deltvallss=1"l0xffff="+code=period_si);
7 id="L104" 9(t">vods<9" 7ame="7304"> 134  9     92 (e *voiL1227" ida>);
voi9e *voiL1227" ida>);
srune as">voice *<9 href93href="+code=v8"sref">s"ubstrea=sreunss7719.c#L1077" reuns1227="+code=period_si);
7 id="L104" 9pss="line9> *vo ss"ubstrea=se class=""sref"">voiL1227" ida>);
 *voioamp;9et">vods<9/a> *voioamp;9ess="line9sref">period_size" class9"sref9>period_s,voioamp;9e"> (    9ormatd="L132" class=form9ter_s9 LE( (    9"sref"e=voice" class=""s9ef"">9o,    href=__iome=snd_pcm" class=__io9 8> (    917name=7389">  89 L 9    <93>(s"ubstrea=srea=c353">  93vods<9" as large as we c   giv9n ant93"L110ls">vods);

vods);
 126period_s9s<4096 /    int a> * */
period_s9/s(fl oamp7 LE +code=voice" class9>period_s9s(9eriod94ize" class="sref">period_sdsmutex_709.353">  93 srune assnd_pcm" 9>  89 L 9    <94a href="sound/pci/id="L" c.5;
"> (    9just a bit behinde * fen9eofnt94ef">shw_"aram8">voi80le=voice"unss7719.c#L1077" reuns12271"l0xffff="+code=period_si);
7 id="L104" 9lockommeo9t. 12 samples seemsstoag9ve a 947609.c#L1286"while0(ids);
);
 ;=quarund/pci/sis7609.a84"AC97_SEMA_BUSY class="line" 7a84"AC97_SEMA_BUSY ;=quar=quaru--8">voi80le=voice"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 9a href="s9und/pci/sis7709.c#L1297"9id="L94an classAtill7nFIXM77=rune assnd_pcmudelayDC_RATEe=flags"udelay73 1i1 srune assnd_pcm" 9>t">vods<9/sis77019.c#L507" id="L59" cla94"L110ls">vods);
 * fvirtual 9sref"951007  id="L918 clss="line" 6name=e"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 9ndeup wit9 two inte7rupts backstoa9acksa95ass=quarte7_"sref"">vgoto7=rune assnd_pcmsis7759s7719.c#L1077" sis77591227="+code=period_si);
7 id="L104" 9iperiod_s9refcts of any jitte7. Ad9ust o95 *at  *9flast "sref" is at least9a fou95class="rivatd7href="sound/pci/sis7709...2s=1"lwaitL_es=anyi759LE e-er ipci/ e-130 */
9 +code=voice" class9dshw_"aramdo
7ls.ce *);
 srune assnd_pcm" 9ois);
);
period_size"  == 1 id="L130" 9nt">vods<9 LE(srune assnd_pcm" 9 1   int 9a href=taile=voice" clas9=tail9619.c#ls">vods);
v=rune assnd_pcmudelayDC_RATEe=flags"udelay73 1i1 srune assnd_pcm" 9ass="line9 7name=7693">  93  89 96atd4"> (e}"while0(--8">voi80le=voice"unss7719.c#L1077" reuns1227fsrune assnd_pcm" 9a> *at  *9mp;oamp; LE(srune assnd_pcm" 9a.9   int period_size"  == 1 id="L130" 9o s);96period_s, * */
 130 +code=voice" class94"> (    9  strucU147eref="+cod76099.c#L96 (e *);
 1ids);
<7md1227);
srune assnd_pcm" 9iopor"d/p9i/e=voice"i1"> 111
<9 href97/sis76019.c#L716" i7="L91" cudelayDC_RATEe=flags"udelay73 1i10fsrune assnd_pcm" 9i1   int 9 7ame="7273">  44 * f"ds_c7pture7open019_ids" "> 9 f"ds_cap9ure_open4"7 (       7tru9t ( (    9  strucU1474"> 134  9     97class="rivatdwhile0(ids);
);
 1=quarund/pci/sis7609.a84"AC97_STATUS_BUSY class="line" 7a84"AC97_STATUS_BUSY1227 ;=quar=quaru--8">voi80le=voice"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 9=record">9o)111
7ref="dse=7oic9" cla97lass=wave_bas6019.c#L716" i7="L91" cudelayDC_RATEe=flags"udelay73 1i1 srune assnd_pcm" 9cozee * f9refcts of a>voicesass="7ser_s-ows.   in09...2s=1"ld="Ler i"linresults ( clany)26 */
vo9111
 +code=voice" class9"is);
);
vods);
 (    9  strucU1474ref="+codann9lnt">97"L110ls">vods);
vods);
);
 134 els">vods);
 *9a hre9="dse==rune assnd_pcmsis7759s7719.c#L1077" sis77591227:ls">vods);
 (    9111
  93 srune assnd_pcm" 9lrecord">9i/sis7709.cf=NULLe=v7ice9 clas98_sis(<8pture8hw_"aramse=voice9"sref">vo9111
 * (    9  strucU147ref="+cod7=fl9gs" c98ode=period_size"a hres="line" 6name=dev_ertrea=">voicedev_ert73 1i=quar29" class="linee=vDC_RATEe=flags" class=="L43" class=1"line1s=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"ac97 rea=c %d sis7759 7mdl0x%08x\n"  77 *vo9/a> *7(oa9p;e  93srune assnd_pcm" 9lis  89 (    9  strucU147"ref="+codis79019.c98"L110ls">vods);
s"ubstrea=svalirq" class=deltvallss=srune assnd_pcm" 9ass="line9  strucU147"> 113 (    917ame="7469)+code=fl7tao9e=irq993sounLE hrefd">vois((s"ubstrea=s"> 128
s"ubstrea=svalirq" class=deltvallss=f">period_size"  == 1 id="L130" 9 class="d9_capture_hwhwsnd_pcm7 cl9ss=hw9d_s.  7ls.ce *vo9111
7(e<9a> *<99ode=period_siLE hrefconssref">s"ubstrea=se" class=control">vo,    int  1ids);
<7md1227[3]);
7ls.ce * 134 *  89 134 * (    9111
 134 *s.ce * 11310lhref="+code=v7ice" 79"+cod4""_Apac97_rwirq" class=delthd_pac97_rw73 1i29" class="lineac97DC_RATEe=flags"ac97soun="L14" class="line" href="sound/pci/sis7609.c#L1346" id="L94" c);
 *10latd4"> (e * 1ids);
<7md1227[
srune assnd_pcm" 10l3ss="lin10l7ame="7469)+code=fl7tao10l7a>10lruct 776019787619.c#L1226 id="L122" c10l4ss="lin10l7ame="7469)=NULLe=v7 cl10l7a>10l_sis(<8pture8hw_"aramse=voice10l5ss="lin10lcapture_hwhwsnd_pcm7 cl10lca>10lune as"ubstrea=snd_pac97_reaoa> 1ids);
(s"ubstrea=s"> 128
period_size"  == 1 id="L130" 10l6ss="lin10l11
7(e<10l11>10lode=p7ls.ce *s"ubstrea=se" class=control">vo,    int  1ids);
<7md1227[3]);
7ls.ce * 134 * 134 *  91 LE10 7a>10 7e" class="srrrrrrrrr=rune assnd_pcmc#L1AC97_CMD_CODEC3_READe=6874"> 134 *10 1n classAtill7 *10 ef="sref">s"uss="lin7ice" 79"+cod4""_Apac97_rwirq" class=delthd_pac97_rw73 1i29" class="lineac97DC_RATEe=flags"ac97soun="L14" class="line" href="sound/pci/sis7609.c#L1346" id="L94" c);
 * (e * 128
srune assnd_pcm" 1014ss="lin10a>);
 134 st10 7a>10 a href="sound/pci/id="L" c.5;
slib_malloc_"agdde10sre>10 ss="ss"ubstrea=s__dev077"> 134 LE);
(period_size"  == 1 id="L130" 10 7ss="lin10ef">bytdde=flags" class=10ef">10 7de=p7ls.ce *10 8de=period_siLE()>10  (e *();
  91 LE10 7a>10 7de=period_siLE hrefLE();
);
7ls.ce *10 ass=quarte7_"sref"">v. ida>);
vods);
 * e *10 atd4"> (e *);
 1ids);
vods);
 1ids);
 *10 ice" class=ta7="+code=period_si);
7 id="L104" 1024ss="lin10href="sound/pci/sis7715.10hre>10 ize" class="s "sref">s"ubstrea=src353">  93 se;
<10" 7>10 a href="sound/pci/id="L" c.5;
  44   10 7a>10 ef">shw_"aram8">voi80le=voicmemse"> 134 LEsrune assnd_pcm" 1027ss="lin10="ds_pre"are_t"comm_"+co10="d>10  (e *);
vods);
s"ubstrea=snd_pcm" c10ef">10 an classAtill nSet our initial "sref10 9ss="lin10" 7ame="7304"> 134  10" 7>10  (e *  93vods);
);
 1ids);
<7aro);0);=quar29" class="linedo-ows.   int );
);=quar29" class="linebuADC_RATEe=flags"buA1227fsrune assnd_pcm" 103ass="lin10e *  93);
 134period_size"  == 1 id="L130" 1031ss="lin10">srune as">voice *<10">s>10eass=quarte7_"sref"">v=rune assnd_pcmrc353">  93vods);
);
srune assnd_pcm" 1032ss="lin10> * *>10eubstrea=od_si7();
vods);
 *  93);
 134vods);
 *>10elass=wave_bas6019.c#L716" i7="L91" crc353">  93vods);
);
srune assnd_pcm" 1035ss="lin10sref">period_size" class10sre>10eruct );
srune assnd_pcm" 1036ss="lin10ormatd="L132" class=form10orm>10e */
  93);
 134vods);
10e7609.c#L1286"7id="L77=iopor"d/pci/e=rc353">  93vods);
);
srune assnd_pcm" 1038ss="lin1017name=7389">  89 L 1017n>10ean classAtill nSet our initial "sref1039ss="lin10" as large as we c   giv10" a>10e */
 +code=voice" class104ass="lin10span>
 */
 +code=voice" class10s2ss="lin10s<4096 /    int 10sef="sref">s"uss="lin7ice" 79"+cod4"rc353">  9310sruct 776019787619.c#L1226 id="L122" c1044ss="lin10s(10s10s_sis(<8pture8hw_"aramse=voice1045ss="lin1017ame="7469">  89 L 1017a>10sune avois( 1ids);
(period_size"  == 1 id="L130" 1046ss="lin10just a bit behinde * fen10jus>10sode=p7ls.ce *s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1048ss="lin10und/pci/sis7709.c#L1297"10und>10san classAtill nSet our initial "sref1049ss="lin10/sis77019.c#L507" id="L510/si>10s */
);
period_size"  == 1 id="L130" 105ass="lin10  *roughaut> * fvirtual 10  *>10  609.c#L1286"7id="L77=iopor"d/pci/e=kfre  89     >  kfre " clids);
srune assnd_pcm" 1051ss="lin10 two inte7rupts backstoa10 tw>10 1soun776019787619.c#L1226 id="L122" c10 2ss="lin10refcts of any jitte7. Ad10ref>10 10 3sounLE href "sref">s"ubstrea=sad_pchip fre  89     >  h=vochip fre 73 1iLE(period_size"  == 1 id="L130" 1054ss="lin10 */
10 6*/ * +code=voice" class1057ss="lin10i/sis7709.c#L1287" id="L10i/s>10  (e *);
 134);
 134srune assnd_pcm" 1058ss="lin10(10 >(srune assnd_pcm" 1059ss="lin10 LE( 134srune assnd_pcm" 106ass="lin10a href=taile=voice" clas10a h>10a (e * 134srune assnd_pcm" 1061ss="lin10a href=quarte7_"sref"e=v10a h>10a * f"ds_c7pture7open019_ids" "> 10a2ss="lin10 7name=7693">  93  810 7n>10a"dse=voice" c7ass="7ser_s-ows.   in09.Now,ifre  everyther iwe alloc" id26 */
fl oamp7 LE +code=voice" class10a4ss="lin10   int 10aize" class="s cla
period_size"  == 1 id="L130" 1065ss="lin10(10aperiod_s,);
srune assnd_pcm" 1066ss="lin10i/id="L" c.5;
<7609.c#L110i/i>10ahref="+code=period_si);
7 id="L104" 10a7ss="lin10i/e=voice"int 10a7ze" class="s cla
period_size"  == 1 id="L130" 1068ss="lin10  strucU147ef="sound7pci10  s>10aan classAtill7nFIXM77=rune assnd_pcmize"mapDC_RATEe=flags"ioe"map" clids);
srune assnd_pcm" 1069ss="lin10  strucU147eref="+cod76010  s>10a"L110ls">vods);
 111
<10i/e>10i/(e *);
fsrune assnd_pcm" 1071ss="lin10 7ame="7273">  4410ihref="+code=v7ice" 79"+cod4"apt_disable_dev0c  89     >  apt_disable_dev0c " clids);
fsrune assnd_pcm" 1072ss="lin10ure_open4"7 (       7tru10ure>10i 134  10  s>10iclass="rivatd7data"7vo s 1ids);
srune assnd_pcm" 1074ss="lin10o)111
7ref="dse=7oic10o)1>10iize" class="sss="linf="+code=period_si);
7 id="L104" 10i5ss="lin10refcts of a>voice10i5soun776019787619.c#L1226 id="L122" c1076ss="lin10i/sis7709.c"+code=vo7ce"10i/s>10ihref="+code=period_si);
7 id="L104" 1077ss="lin10111
s"ubstrea=sad_pdev_fre  89     >  h=vodev_fre 73 1iLE(voicedev1227f">period_size"  == 1 id="L130" 1078ss="lin10  strucU1474f="sound7 L 10  s>10iL896"7ls.ce *10i (e *(vods);
10" f="sref">s"uss="lin7ice" 79"+cod4"ad_pchip fre  89     >  h=vochip fre 73 1i
srune assnd_pcm" 1081ss="lin10 6ame="6227c#L626" i7="L10 6a>10"1soun776019787619.c#L1226 id="L122" c1082ss="lin10ure_open4"7(oamp;e *10ure>10"
10"3sounLE href "sref">s"ubstrea=sad_pchip 077"> 134 LE(period_size"  == 1 id="L130" 1084ss="lin10i/sis7709.cf=NULLe=v7ice10i/s>10"4de=p7ls.ce *10"period_s,_ADC_RATEe=flags" class=="L43" class=1"line1ioporss7719.c#L1077" iapors1227="+code=period_si);
7 id="L104" 10"6ss="lin10  strucU147ref="+cod7=fl10  s>10" */
vois(_ADC_RATEe=flags" class=="L43" class=1"line1ioaddrDC_RATEe=flags"ioaddrass=="+code=period_si);
7 id="L104" 10"7ss="lin10/a> *7(oa10/a>>10"i/e=voice"int7" id="L4longint   8910">(voiL1227" ida>);
 *s"ubstrea=sreunss7719.c#L1077" reuns1227="+code=period_si);
7 id="L104" 109ass="lin1017ame="7469);
s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1091ss="lin10  strucU147"> 113101 * f"ds_c7pture7open019_ids" "> 1092ss="lin1017ame="7469)oamp;e101"dse=voice" c7ass="7ser_s-ows.   in09.Reseam="liaudi +code=voice" class1093ss="lin1017ame="7469)+code=fl7tao1017a>101sref">fl oamp7 LE +code=voice" class1094ss="lin1017ame="7469)=NULLe=v7 cl1017a>101ize" class="sref">period_sds759lirq" class=delt759l73 1ids);
 134);
 134srune assnd_pcm" 1095ss="lin10_capture_hwhwsnd_pcm7 cl10_ca>101ruct srune assnd_pcm" 1096ss="lin10111
7(e<10111>101ef">shw_"aram8">voi80le=voic759lirq" class=delt759l73 1i0);
 134srune assnd_pcm" 1097ss="lin10i/sis7709.c_constrai7t_m10i/s>101,    href=__iome=snd_pcm" class=__io1018ss="lin10i/sis7709.c_>  891018dse=voice" c7ass="7ser_s-ows.   in09.Geam="liAC-_> kasemaphorl,s=1"ld=seam="licea=csan class="comment"> +code=voice" class1099ss="lin10111
1019ref">fl oamp7 LE +code=voice" class11lass="lin11lass/a>
110/(e * 11311lhref="+code=vwhile0(ids);
);
 ;=quarund/pci/sis7609.a84"AC97_SEMA_BUSY class="line" 7a84"AC97_SEMA_BUSY ;=quar=quaru--8">voi80le=voice"unss7719.c#L1077" reuns1227f"+code=period_si);
7 id="L104" 1102ss="lin11l7ame="7469)oamp;e11latd4"> (e *srune assnd_pcm" 11l3ss="lin11l7ame="7469)+code=fl7tao11l7a>110ice" a href="sref">srune assnd_pcm" 1104ss="lin11l7ame="7469)=NULLe=v7 cl11l7a>110ize" class="s class="line" 6name=e"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 1105ss="lin11lcapture_hwhwsnd_pcm7 cl11lca>110period_s,voi80le=voicEIOs7719.c#L1077" EIO1227="+code=period_si);
7 id="L104" 11l6ss="lin11l11
7(e<11l11>110href="+code=period_si);
7 id="L104" 11l7ss="lin11l/sis7709.c_constrai7t_m11l/s>110 (e *);
 134);
srune assnd_pcm" 1108ss="lin11l/sis7709.c_>  89110>(srune assnd_pcm" 1109ss="lin11l11
110"L110ls">vods);
  91 LE11 7a>111/(e *111href="+code=vwhile0(ids);
);
 1=quarund/pci/sis7609.a84"AC97_STATUS_BUSY class="line" 7a84"AC97_STATUS_BUSY1227 ;=quar=quaru--8">voi80le=voice"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 11h2ss="lin11rams_ratdsnd_pcm" class=11ram>111atd4"> (e *srune assnd_pcm" 1113ss="lin11f="sound/pci/sis7719.c#L11f=">111ice" a href="sref">srune assnd_pcm" 1114ss="lin11a>);
 */
 134 st11 7a>11 a hre>fl oamp7 LE +code=voice" class11 6ss="lin11sref">slib_malloc_"agdde11sre>111ef">shw_"aram8">voi80le=voic759lirq" class=delt759l73 1ind/pci/sis7609.a84"AC97_SEMA_RELEAame=6874"> 134 els">vods);
bytdde=flags" class=11ef">1117ze" class="s class="line" 6name=e"unss7719.c#L1077" reuns1227f">period_size"  == 1 id="L130" 1118ss="lin11
voi80le=voicEIOs7719.c#L1077" EIO1227="+code=period_si);
7 id="L104" 1119ss="lin11a>);
vods);
  91 LE11 7a>11 7de=period_si7ass="7ser_s-ows.   in09.Nowassss=we16"
	velfinishedi"linreset,lfindi7591wsss16"
	s attachid26 */
1121*/ * */
 e *112sa> * */
112sref">fl oamp7 LE */
11247" id="L55" class="line" 7name=7559"pan class="comment"> +code=voice" class1125ss="lin11" 7ame="7226"> se;
<11" 7>112ruct _ADC_RATEe=flags" class=="L43" class=1"line17ea=cvoicesenss7719.c#L1077" rea=cvoicesens1227a=nf="+code=period_si);
7 id="L104" 1126ss="lin11 7ame="7273">  44   11 7a>11 ef">shw_"aram8">voi80le=voicsis7759s7719.c#L1077" sis775912271"line17name=7328"ms=cvoto_jiffieADC_RATEe=flags"ms=cvoto_jiffieA73 1i500)1ound/pci/sis7609.jiffieADC_RATEe=flags"jiffieA73 1="+code=period_si);
7 id="L104" 1127ss="lin11="ds_pre"are_t"comm_"+co11="d>11  (e *voi80le=voicsis7_beforl_eqs7719.c#L1077" sis7_beforl_eq73 1ind/pci/sis7609.jiffieADC_RATEe=flags"jiffieA73 1);
 *s"ubstrea=snd_pcm" c11ef">112an classAtill7nFIXM77=rune assnd_pcm);
 srune assnd_pcm" 1129ss="lin11" 7ame="7304"> 134  11" 7>11  (e *period_size"  == 1 id="L130" 113ass="lin11e * 134srune assnd_pcm" 1131ss="lin11">srune as">voice *<11">s>11eass=quarte7_"sref"">v cla=rune assnd_pcmperiod_size"  == 1 id="L130" 1132ss="lin11> * *>113atd4"> (e *_ADC_RATEe=flags" class=="L43" class=1"line17ea=cvoicesenss7719.c#L1077" rea=cvoicesens1227a|"line17name=7328"c#L1SECONDARY_CODEC_PRESENTe=6874"> 134srune assnd_pcm" 1133ss="lin11/a> *v cla=rune assnd_pcmperiod_size"  == 1 id="L130" 1134ss="lin11/a> *>11elass=wave_bas6019.c#Lf=hw_"ar8sref"80ref="+c>_ADC_RATEe=flags" class=="L43" class=1"line17ea=cvoicesenss7719.c#L1077" rea=cvoicesens1227a|"line17name=7328"c#L1TERTIARY_CODEC_PRESENTe=6874"> 134srune assnd_pcm" 1135ss="lin11sref">period_size" class11sre>113a href="sound/pci/id="L" c.5;
113ode=period_size"a hre cla
period_size"  == 1 id="L130" 1137ss="lin11"sref"e=voice" class=""s11"sr>11e7609.c#L1286"7id="L7777777777bd="ksrune assnd_pcm" 11e8ss="lin1117name=7389">  89 L 1117n>11ean classAtill nSet our initial "sref1139ss="lin11" as large as we c   giv11" a>113 (e *srune assnd_pcm" 114ass="lin11span>
srune assnd_pcm" 1141ss="lin11i/sis7709.c#L1227" id="L11i/s>114 * f"ds_c7pture7open019_ids" "> 11s2ss="lin11s<4096 /    int 114"dse=voice" c7ass="7ser_s-ows.   in09.All doon, checka_es=errorA26 */
114sref">fl oamp7 LE +code=voice" class1144ss="lin11s(11s114ize" class="s class="line" 6name="_ADC_RATEe=flags" class=="L43" class=1"line17ea=cvoicesenss7719.c#L1077" rea=cvoicesens1227f
7ls.ce *  89 L 1117a>114period_s,="L14" class="line" devrea=">voicedev1227);
flds"could notlfindianyirea=cv\n"  77srune assnd_pcm" 1146ss="lin11just a bit behinde * fen11jus>114ode=period_size"a hress="lin-8">voi80le=voicEIOs7719.c#L1077" EIO1227="+code=period_si);
7 id="L104" 1147ss="lin11t. 12 samples seemsstoag11t. >11s7609.c#L1286"7a href="sref">srune assnd_pcm" 1148ss="lin11und/pci/sis7709.c#L1297"11und>11san classAtill nSet our initial "sref1149ss="lin11/sis77019.c#L507" id="L511/si>11s */
 *voicedev_warn73 1i=quar29" class="linee=vDC_RATEe=flags" class=="L43" class=1"line1s=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"misser irea=cv,a_eaec %0x, expectec %0x\n"  77 *vvvvvvvvvvvvvvvvvvvvvvvvvv
srune assnd_pcm" 11 3ss="lin11flast "sref" is at least11fla>115ice" a href="sref">srune assnd_pcm" 1154ss="lin11 */
 */
11 6*/ * */
voneedlesslynresqualer ifrom 48kHZ26 */
11 >(fl oamp7 LE +code=voice" class1159ss="lin11 LE( 134);
 13411a (e * 134/134ref=cscodLOOP/c#L1AC97_CONF_PCM_LR_ENABLme=6874"> 134/1"+code=period_si);
7 id="L104" 1161ss="lin11a href=quarte7_"sref"e=v11a h>116ass=quarte7_"sref"">v=rune assnd_pcmc#L1AC97_CONF_PCM_CAP_MIC_ENABLme=6874"> 134/1"+code=period_si);
7 id="L104" 1162ss="lin11 7name=7693">  93  811 7n>116atd4"> (e * 134/1"+code=period_si);
7 id="L104" 1163ss="lin11mp;oamp; LE(1163eriod_s,v8sref"80ref="+cc#L1AC97_CONF_CODEC_VRA_ENABLme=6874"> 134);
 1341165*/
 */
1166*/ * +code=voice" class11a7ss="lin11i/e=voice"int 116 (e * 134116an classAtill nSet our initial "sref1169ss="lin11  strucU147eref="+cod76011  s>116 */
 */
 111
<11i/e>117p*/ * +code=voice" class1171ss="lin11 7ame="7273">  4411ihref="+code=v7ice" 79"+cod4"759lirq" class=delt759l73 1ind/pci/sis7609.a84"DMA_CSR_PCI_SETTINGS class="line" 7a84"DMA_CSR_PCI_SETTINGS);
11i 134  11  s>11iclass="rivatd7ass="7ser_s-ows.   in09.Reseam="lisynchronization groupsifes=all ofm="liphannelsan class="comment"> +code=voice" class1174ss="lin11o)111
7ref="dse=7oic11o)1>11747" id="L55" class="line" 7name=7559"ito blaasyncronous. If ns2start doer iSPDIF es=5.1 "> +c, etc26 */
 */
1176*/ *voany6 */
117 (e * */
117>(fl oamp7 LE +code=voice" class11i9ss="lin11  strucU1474ref="+codann11  s>117 (e *118 (e * *11ure>118ubstrea=od_si7(118class="rivatd7data"7vo s
11"period_s,);
 *118ode=period_size"a hre=rune assnd_pcmwritelirq" class=deltwritel73 1ind/pci/sis7609.iirq" class=delti1227);
srune assnd_pcm" 11"7ss="lin11/a> *7(oa11/a>>1187609.c#L1286"7id="L77=iopor"d/pci/e=writelirq" class=deltwritel73 1ind/pci/sis7609.a84"MIXER_RIGHT_NO_ATTEN class="line" 7a84"MIXER_RIGHT_NO_ATTEN/134ref=cscodLOOP/c#L1MIXER_LEFT_NO_ATTEN class="line" 7a84"MIXER_LEFT_NO_ATTEN/1"+code=period_si);
7 id="L104" 11"8ss="lin11  strucU147">  89118an classAtill7nFIXM77c#L1286"7id="L77=iopor"d/pci/e=a84"MIXER_DEST_0 class="line" 7a84"MIXER_DEST_01227);
srune assnd_pcm" 11"9ss="lin11  strucU147"ref="+codis711  s>11" (e *srune assnd_pcm" 119ass="lin1117ame="7469);
srune assnd_pcm" 1191ss="lin11  strucU147"> 113119href="+code=v7ass="7ser_s-ows.   in09.Don16"
	tiattenuate=anyiaudi */
119sa> * */
111sref">fl oamp7 LE */
11947" id="L55" class="line" 7name=7559"ineed30 */
 +code=voice" class1196ss="lin11111
7(e<11111>111ef">shw_"aram8">voi80le=voic759lirq" class=delt759l73 1i0xffff0000);
 134  891118dse=voice" c7ass="7ser_s-ows.   in09.Ensureassss=="liwave=eng=NU is/in normal operatir im60926 */
fl oamp7 LE +code=voice" class12lass="lin12lass/a>
120/(e * 134 113120 * f"ds_c7pture7open019_ids" "> 1202ss="lin12l7ame="7469)oamp;e120"dse=voice" c7ass="7ser_s-ows.   in09.Go aheads=1"lenable ="liDMA  7namrupts.1They won16"
	tigo livean class="comment"> +code=voice" class12l3ss="lin12l7ame="7469)+code=fl7tao12l7a>120sref">fl oamp7 LE */
12047" id="L55" class="line" 7name=7559"pan class="comment"> +code=voice" class1205ss="lin12lcapture_hwhwsnd_pcm7 cl12lca>120ruct );
 134/1"+code=period_si);
7 id="L104" 12l6ss="lin12l11
7(e<12l11>120ode=period_size"a hre=rune assnd_pcmc#L1GIER_AUDIO_RECORD_DMA_IRQ_ENABLme=6874"> 134);
 134srune assnd_pcm" 12l7ss="lin12l/sis7709.c_constrai7t_m12l/s>120,    href=__iome=snd_pcm" class=__io1208ss="lin12l/sis7709.c_>  89120>(srune assnd_pcm" 121ass="lin12 7ame="7191">  91 LE12 7a>1217609.a href="sref">srune assnd_pcm" 1211ss="lin12sreac" s"et_ratdsnd_pcm"12sre>121href=#ifdefund/pci/sis7609.CONFIG_PM_SLEEPPTUREcscode=ssoCONFIG_PM_SLEEP609.a href="sref">srune assnd_pcm" 1212ss="lin12rams_ratdsnd_pcm" class=12ram>121atd4"LE href "sref">s"ubstrea=sad_psuspenoa> 1ids);
(voicedev1227f">period_size"  == 1 id="L130" 1213ss="lin12f="sound/pci/sis7719.c#L12f=">121ice" 7ls.ce *)>121ize" class="sLE(voiceppt_dev1227"129" class="lines=cirq" class=deltcii1"line17name=7328"to_ppt_devrea=">voiceto_ppt_dev73 1ids);
voicedev1227f="+code=period_si);
7 id="L104" 1215ss="lin12 7ame="7164"> 134 st12 7a>1215ze" class="sLE(vods);
);
voicedev1227f="+code=period_si);
7 id="L104" 1216ss="lin12sref">slib_malloc_"agdde12sre>121ef">shw_"aramLE(vods);
 1ids);
<7aro1227="L43" class=1"line1srivat ound/pci/sis7609.c#Lsrivat ound/1227="+code=period_si);
7 id="L104" 1217ss="lin12ef">bytdde=flags" class=12ef">1217ze" class="sd">vois(_ADC_RATEe=flags" class=="L43" class=1"line1ioaddrDC_RATEe=flags"ioaddrass=="+code=period_si);
7 id="L104" 1218ss="lin12
s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1219ss="lin12a>);
vods);
  91 LE12 7a>122/(e *);
 1ids);
<7aro1227);
122href="+code=v7ice" 79"+cod4" E);
 e *122"dse=voice" c cla
 134period_size"  == 1 id="L130" 12 3ss="lin12ci/sis7719.c#L1047 id="L12ci/>1223eriod_s,v8sref"80ref="+c E 1ids);
);
srune assnd_pcm" 1224ss="lin12href="sound/pci/sis7715.12hre>122ize" class="s cla
 134period_size"  == 1 id="L130" 12 5ss="lin12" 7ame="7226"> se;
<12" 7>122period_s, 1ids);
);
srune assnd_pcm" 1226ss="lin12 7ame="7273">  44   12 7a>12 ef">shw_"aram cla
 134period_size"  == 1 id="L130" 12 7ss="lin12="ds_pre"are_t"comm_"+co12="d>1227609.c#L1286"7id="L77=iopor"d/pci/e= E 1ids);
);
srune assnd_pcm" 1228ss="lin12ef">s"ubstrea=snd_pcm" c12ef">122an classAtill nSet our initial "sref1229ss="lin12" 7ame="7304"> 134  12" 7>122 */
 */
123p*/ * +code=voice" class1231ss="lin12">srune as">voice *<12">s>12eass=quarte7_" cla
 * *>123atd4"> (e *);
srune assnd_pcm" 1233ss="lin12/a> *v
srune assnd_pcm" 1234ss="lin12/a> *>12elass=wave_bas7a href="sref">srune assnd_pcm" 1235ss="lin12sref">period_size" class12sre>123a href="sound/pci/id="L" c.5;
123ode=period_si href="sound/pci/sis77011Savelss6  7namnal  */
123 (e * +code=voice" class1238ss="lin1217name=7389">  89 L 1217n>123an classAtill_es=ids);
 *123 (e *);
srune assnd_pcm" 124ass="lin12span>
srune assnd_pcm" 1241ss="lin12i/sis7709.c#L1227" id="L12i/s>1241ass=wave_bas7a href="sref">srune assnd_pcm" 12s2ss="lin12s<4096 /    int 124(124class="rivatd7data"7vo s     >  apt_disable_dev0c " clids);
fsrune assnd_pcm" 1244ss="lin12s(12s124ize" class="s7data"7vo s);
fsrune assnd_pcm" 1245ss="lin1217ame="7469">  89 L 1217a>124ruct );
);
fsrune assnd_pcm" 1246ss="lin12just a bit behinde * fen12jus>124ode=period_siss="linf="+code=period_si);
7 id="L104" 1247ss="lin12t. 12 samples seemsstoag12t. >12s7609.7a href="sref">srune assnd_pcm" 12s8ss="lin12und/pci/sis7709.c#L1297"12und>12san classAtill nSet our initial "sref1249ss="lin12/sis77019.c#L507" id="L512/si>12s */s"ubstrea=sad_pcesumeDC_RATEe=flags" d_pcesume73 1iLE(voicedev1227f">period_size"  == 1 id="L130" 125ass="lin12  *roughaut> * fvirtual 12  *>12  609.7ls.ce *(voiceppt_dev1227"129" class="lines=cirq" class=deltcii1"line17name=7328"to_ppt_devrea=">voiceto_ppt_dev73 1ids);
voicedev1227f="+code=period_si);
7 id="L104" 12 2ss="lin12refcts of any jitte7. Ad12ref>1252609.c#L1286"LE(vods);
);
voicedev1227f="+code=period_si);
7 id="L104" 12 3ss="lin12flast "sref" is at least12fla>1253609.c#L1286"LE(vods);
 1ids);
<7aro1227="L43" class=1"line1srivat ound/pci/sis7609.c#Lsrivat ound/1227="+code=period_si);
7 id="L104" 1254ss="lin12vois(_ADC_RATEe=flags" class=="L43" class=1"line1ioaddrDC_RATEe=flags"ioaddrass=="+code=period_si);
7 id="L104" 1255ss="lin12/sis7709.c#L1267" id="L512/si>125ruct s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1256ss="lin12 needstoaus fvirtual "sr12 ne>125href="+code=period_si);
7 id="L104" 1257ss="lin12i/sis7709.c#L1287" id="L12i/s>125 (e *);
);
125>();
fsrune assnd_pcm" 1259ss="lin12 LE(vods);
12a (e *);
f119.c#0f
7ls.ce *126ass=quarte7_"sref"">v=rune assnd_pcmdev_ertrea=">voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oiss-enable dev0c \n"  77srune assnd_pcm" 1262ss="lin12 7name=7693">  93  812 7n>126atd4"> (e *srune assnd_pcm" 1264ss="lin12   int 126_sis(<8pture8hw_"aramse=voice1265ss="lin12(1265*/
);
 *126ode=period_size"a hre=rune assnd_pcmdev_ertrea=">voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oiss-inis controller\n"  77srune assnd_pcm" 1267ss="lin12i/e=voice"int 1267609.c#L1286"7id="L77go=oi" class="line" errorrea=">voiceerror1227="+code=period_si);
7 id="L104" 1268ss="lin12  strucU147ef="sound7pci12  s>1268eriod_s,srune assnd_pcm" 1269ss="lin12  strucU147eref="+cod76012  s>126"L110ls">vods);
 111
<12i/e>127 (e *);
="L43" class=1"line1irqs7719.c#L1077" irq1227);
vods);
  44127ass=quarte7_"sref"">vvvvvvvvv
 134 *127atd4"> (e *voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oissgain IRQ %d\n"  77="L43" class=1"line1irqs7719.c#L1077" irq1227 srune assnd_pcm" 1273ss="lin12  strucU1474"> 134  12  s>1273eriod_s,vgo=oi" class="line" errorrea=">voiceerror1227="+code=period_si);
7 id="L104" 1274ss="lin12o)111
7ref="dse=7oic12o)1>127lass=wave_bas7a href="sref">srune assnd_pcm" 1275ss="lin12refcts of a>voice127a href="sound/pci/id="L" c.5;
127ode=period_si href="sound/pci/sis77011Restorl saved  +code=voice" class1277ss="lin12111
 */
127>(fl oamp7 LE +code=voice" class12i9ss="lin12  strucU1474ref="+codann12  s>127 (e *);
 *128 609.c#L1286"7id="L77=iopor"d/pci/e=memcpy_toiis7719.c#L1077" memcpy_toii" clids);
srune assnd_pcm" 1281ss="lin12 6ame="6227c#L626" i7="L12 6a>128ass=quarte7_"sref"">v=rune assnd_pcmioaddrDC_RATEe=flags"ioaddrass=1+=;4096srune assnd_pcm" 1282ss="lin12ure_open4"7(oamp;e *12ure>128ubstrea=od_si7a href="sref">srune assnd_pcm" 1283ss="lin12111
128ice" a href="sref">srune assnd_pcm" 1284ss="lin12i/sis7709.cf=NULLe=v7ice12i/s>128ize" class="s7data"7vo s);
srune assnd_pcm" 1285ss="lin12111
128a href="sound/pci/id="L" c.5;
128ef">shw_"aram8">voi80le=voic"_ADC_RATEe=flags" class=="L43" class=1"line1irqs7719.c#L1077" irq12271= 7de=vo78 ="L43" class=1"line1irqs7719.c#L1077" irq1227srune assnd_pcm" 1287ss="lin12/a> *7(oa12/a>>128 (e *);
fsrune assnd_pcm" 12"8ss="lin12  strucU147">  89128an classAtill nSet our initial "sref12"9ss="lin12  strucU147"ref="+codis712  s>12" (e * 134period_size"  == 1 id="L130" 129ass="lin1217ame="7469);
);
srune assnd_pcm" 1291ss="lin12  strucU147"> 113129ass=quarte7_" cla
 134period_size"  == 1 id="L130" 1292ss="lin1217ame="7469)oamp;e129atd4"> (e *);
srune assnd_pcm" 1293ss="lin1217ame="7469)+code=fl7tao1217a>1293ss=quarte7_" cla
 134period_size"  == 1 id="L130" 1294ss="lin1217ame="7469)=NULLe=v7 cl1217a>129lass=wave_bas6019.c#L" class=1"line1aE);
srune assnd_pcm" 1295ss="lin12_capture_hwhwsnd_pcm7 cl12_ca>129a href="sound/pci/id="L" c.5;
7(e<12111>121ef">shw_"aram8">voi80le=voicaE);
 1ids);
<7aro1227);
fsrune assnd_pcm" 1297ss="lin12i/sis7709.c_constrai7t_m12i/s>129 (e * class="line" errorrea=">voiceerror1227:assAtill nSet our initial "sref13lass="lin13lass/a>
130/(e *);
 1ids);
<7aro1227fsrune assnd_pcm" 1301ss="lin13l strucU147"> 1131301(e *voi80le=voicEIOs7719.c#L1077" EIO1227="+code=period_si);
7 id="L104" 1302ss="lin13l7ame="7469)oamp;e130"dse=7a href="sref">srune assnd_pcm" 13l3ss="lin13l7ame="7469)+code=fl7tao13l7a>130ice" a href="sref">srune assnd_pcm" 1304ss="lin13l7ame="7469)=NULLe=v7 cl13l7a>13047" iLE hrefnd/pci/sis7609.a8MPLE_DEV_PM_OPS class="line" 7a8MPLE_DEV_PM_OPS" clids);
 1ids);
srune assnd_pcm" 1305ss="lin13lcapture_hwhwsnd_pcm7 cl13lca>130ruct #def=NU nd/pci/sis7609.a84"PM_OPS class="line" 7a8S_PM_OPS" cl *srune assnd_pcm" 1306ss="lin13l11
7(e<13l11>130ode=p#elsea href="sref">srune assnd_pcm" 1307ss="lin13l/sis7709.c_constrai7t_m13l/s>130,    #def=NU nd/pci/sis7609.a84"PM_OPS class="line" 7a8S_PM_OPS" cl *srune assnd_pcm" 1308ss="lin13l/sis7709.c_>  89130>( +code=voice" class1309ss="lin13l11
130"L110ls">vods);
  91 LE13 7a>1317609.LE href "sref">s"ubstrea=sad_palloc_suspenoa> 1ids);
(period_size"  == 1 id="L130" 1311ss="lin13sreac" s"et_ratdsnd_pcm"13sre>131href=7ls.ce *131"dse=voice" c "sref">s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1313ss="lin13f="sound/pci/sis7719.c#L13f=">131ice" a href="sref">srune assnd_pcm" 1314ss="lin13a>);
 +code=voice" class1315ss="lin13 7ame="7164"> 134 st13 7a>131a hre>fl oamp7 LE +code=voice" class1316ss="lin13sref">slib_malloc_"agdde13sre>1316*/ * +code=voice" class1317ss="lin13ef">bytdde=flags" class=13ef">131 (e * */
131>(fl oamp7 LE +code=voice" class1319ss="lin13a>);
 *  91 LE13 7a>132 609.c#L1286"7id="L77=iopor"d/pci/e=a_ADC_RATEe=flags" class=="L43" class=1"line1suspeno_srune assnd_pcm" 13 1ss="lin13ds_alloc_t"comm_"+code=v13ds_>132ass=quarte7_"sref"">v cla!=iopor"d/pci/e=a_ADC_RATEe=flags" class=="L43" class=1"line1suspeno_period_size"  == 1 id="L130" 13 2ss="lin13 7ame="7293"> e *132atd4"> (e * *voi80le=voicENOMEMs7719.c#L1077" ENOMEM1227="+code=period_si);
7 id="L104" 13 3ss="lin13ci/sis7719.c#L1047 id="L13ci/>1323eriod_s,srune assnd_pcm" 1324ss="lin13href="sound/pci/sis7715.13hre>132ize" class="s7data"7vo s);
srune assnd_pcm" 13 5ss="lin13" 7ame="7226"> se;
<13" 7>132a href="sound/pci/id="L" c.5;
  44   13 7a>132ode=period_siss="linf="+code=period_si);
7 id="L104" 13 7ss="lin13="ds_pre"are_t"comm_"+co13="d>1327609.7a href="sref">srune assnd_pcm" 1328ss="lin13ef">s"ubstrea=snd_pcm" c13ef">132an classAtill nSet our initial "sref1329ss="lin13" 7ame="7304"> 134  13" 7>132 */s"ubstrea=s__dev0niss7719.c#L1077" __dev0nisde=peef">s"ubstrea=sad_pchip_creaheDC_RATEe=flags" d_pchip_creahe" cliLE(vods);
 *voiceppt_dev1227"129" class="lines=cirq" class=deltciif">period_size"  == 1 id="L130" 1331ss="lin13">srune as">voice *<13">s>133href=7ls.ce * *>1332609.c#L1286"LE(vods);
 1ids);
<7aro1227="L43" class=1"line1srivat ound/pci/sis7609.c#Lsrivat ound/1227="+code=period_si);
7 id="L104" 1333ss="lin13/a> *(s"ubstrea=sopADC_RATEe=flags"opAde=pe=
7ls.ce *period_size" class13sre>133period_s,s"ubstrea=sdev_fre DC_RATEe=flags"dev_fre ass=as">vods);
vods);
133ode=period_si}="+code=period_si);
7 id="L104" 1337ss="lin13"sref"e=voice" class=""s13"sr>133 (e *s"ubstrea=srcirq" class=deltrc1227="+code=period_si);
7 id="L104" 1338ss="lin1317name=7389">  89 L 1317n>133an classAtill "sref">s"ubstrea=scirq" class=delti1227="+code=period_si);
7 id="L104" 1339ss="lin13" as large as we c   giv13" a>133"L110ls">vods);

     >  apt_enable_dev0c " clids);
f="+code=period_si);
7 id="L104" 1341ss="lin13i/sis7709.c#L1227" id="L13i/s>134ass=quarte7_" cla
period_size"  == 1 id="L130" 13s2ss="lin13s<4096 /    int 134atd4"> (e *134ice" a href="sref">srune assnd_pcm" 1344ss="lin13s(13s134ize" class="s cla
);
);
 *  89 L 1317a>134period_s,s"ubstrea=sdev_ertrea=">voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"architectureadoes not support 30-bit PCIlbusmasnamiDMA"  77srune assnd_pcm" 1346ss="lin13just a bit behinde * fen13jus>134ode=period_size"a hrego=oi" class="line" error_ous_enableoa> 1ids);
srune assnd_pcm" 13s8ss="lin13und/pci/sis7709.c#L1297"13und>13san classAtill nSet our initial "sref1349ss="lin13/sis77019.c#L507" id="L513/si>134 (e *);
srune assnd_pcm" 135ass="lin13  *roughaut> * fvirtual 13  *>135/(e *f="+code=period_si);
7 id="L104" 13 1ss="lin13 two inte7rupts backstoa13 tw>135href="+code=v7ice" 79"+cod4" pin_lock_iniss7719.c#L1077" "pin_lock_inis73 1i=quar29" class="line"_ADC_RATEe=flags" class=="L43" class=1"line1vo0c _lock 89     >  vo0c _lockf="+code=period_si);
7 id="L104" 13 2ss="lin13refcts of any jitte7. Ad13ref>1352609.c#L1286"29" class="line"_ADC_RATEe=flags" class=="L43" class=1"line17aroa> 1ids);
<7aro1227"s">vods);
 1ids);
<7aro1227="+code=period_si);
7 id="L104" 13 3ss="lin13flast "sref" is at least13fla>1353609.c#L1286"29" class="line"_ADC_RATEe=flags" class=="L43" class=1"line1s=cirq" class=deltcii1= 7de=vo78 ="+code=period_si);
7 id="L104" 13 4ss="lin13srune assnd_pcm" 1355ss="lin13/sis7709.c#L1267" id="L513/si>135ruct );
);0f="+code=period_si);
7 id="L104" 13 6ss="lin13 needstoaus fvirtual "sr13 ne>135href="+code=period_si);
7 id="L104" 1357ss="lin13i/sis7709.c#L1287" id="L13i/s>135 (e *);
);
flds"SiS="L1"  77srune assnd_pcm" 13 8ss="lin13(135>( *135 (e *="L14" class="line" devrea=">voicedev1227);
flds"unable request regionA\n"  77srune assnd_pcm" 136ass="lin13a href=taile=voice" clas13a h>136 609.c#L1286"7id="L77go=oi" class="line" error_ous_enableoa> 1ids);
1361ass=wave_bas7a href="sref">srune assnd_pcm" 1362ss="lin13 7name=7693">  93  813 7n>136(1363609.c#L1286"29" class="linercirq" class=deltrc12271= -8">voi80le=voicEIOs7719.c#L1077" EIO1227="+code=period_si);
7 id="L104" 1364ss="lin13   int 136ize" class="s7data"7vo s     >  ioremap_nocach " clids);
);
);1));0x4000f="+code=period_si);
7 id="L104" 1365ss="lin13(1365*/
 *136ode=period_size"a hre=rune assnd_pcmdev_ertrea=">voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oissmap MMIO, abort339\n"  77srune assnd_pcm" 1367ss="lin13i/e=voice"int 1367609.c#L1286"7id="L77go=oi" class="line" error_ous_"seanupa> 1ids);
1368eriod_s,srune assnd_pcm" 1369ss="lin13  strucU147eref="+cod76013  s>136"L110ls">vods);
 111
<13i/e>137/(e * 1ids);
  44137ass=quarte7_" cla
 *137atd4"> (e *voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oialloc he srune assnd_pcm" 1373ss="lin13  strucU1474"> 134  13  s>1373eriod_s,vgo=oi" class="line" error_ous_"seanupa> 1ids);
137lass=wave_bas7a href="sref">srune assnd_pcm" 1375ss="lin13refcts of a>voice137a href="sound/pci/id="L" c.5;
137ef">shw_"aram8">voi80le=voicrcirq" class=deltrc12271= 7de=vo78 );
1377ss=quarte7_" cla
period_size"  == 1 id="L130" 1378ss="lin13  strucU1474f="sound7 L 13  s>1378eriod_s,vgo=oi" class="line" error_ous_"seanupa> 1ids);
137"L110ls">vods);
138/(e *);
="L43" class=1"line1irqs7719.c#L1077" irq1227);
 134vods);
v> * *13ure>138ubstrea=od_si cla
 *1383eriod_s,v
voicedev_ert73 1i=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227);
flds"unable =oialloc he irq %d\n"  77vgo=oi" class="line" error_ous_"seanupa> 1ids);
1385ass=wave_bas7a href="sref">srune assnd_pcm" 13"6ss="lin13  strucU147ref="+cod7=fl13  s>138href="+code=period_si);
7 id="L104" 1387ss="lin13/a> *7(oa13/a>>138 (e *);
="L43" class=1"line1irqs7719.c#L1077" irq1227="+code=period_si);
7 id="L104" 1388ss="lin13  strucU147">  89138>();
fsrune assnd_pcm" 13"9ss="lin13  strucU147"ref="+codis713  s>138"L110ls">vods);
);
 * 113139ass=quarte7_"sref"">v=rune assnd_pcmvo0c  89     >  vo0c 1227"=h=quar29" class="linee=vDC_RATEe=flags" class=="L43" class=1"line1vo0c vDC_RATEe=flags"vo0c vass=[=rune assnd_pcmiirq" class=delti1227]srune assnd_pcm" 1392ss="lin1317ame="7469)oamp;e139atd4"> (e *     >  vo0c 1227="L43" class=1"line1nu(irq" class=deltnu(ass=1"line17name=7328"iirq" class=delti1227srune assnd_pcm" 1393ss="lin1317ame="7469)+code=fl7tao1317a>1393eriod_s,v
     >  ctrl_bas ass=1"line17name=7328"a8S_PLAY_DMA_ADDR 89     >  a8S_PLAY_DMA_ADDR" clids);
srune assnd_pcm" 1394ss="lin1317ame="7469)=NULLe=v7 cl1317a>139lass=wave_bas6019.c#L" class=1"line1vo0c  89     >  vo0c 1227="L43" class=1"line1wave_bas  89     >  wave_bas ass=1"line17name=7328"a8S_WAVE_ADDR 89     >  a8S_WAVE_ADDR" clids);
srune assnd_pcm" 1395ss="lin13_capture_hwhwsnd_pcm7 cl13_ca>1395ass=wave_bas7a href="sref">srune assnd_pcm" 1396ss="lin13111
7(e<13111>139href="+code=period_si);
7 id="L104" 1397ss="lin13i/sis7709.c_constrai7t_m13i/s>139 (e *     >  vo0c 1227"=h=quar29" class="linee=vDC_RATEe=flags" class=="L43" class=1"line1capture_vo0c  89     >  capture_vo0c 1227srune assnd_pcm" 1398ss="lin13i/sis7709.c_>  89139>( 134srune assnd_pcm" 1399ss="lin13111
139 (e *     >  vo0c 1227="L43" class=1"line1nu(irq" class=deltnu(ass=1"line17name=7328"a8S_CAPTURm_CHAN_AC97_PCM_IN 89     >  a8S_CAPTURm_CHAN_AC97_PCM_IN1227srune assnd_pcm" 14lass="lin14lass/a>
140/(e *     >  vo0c 1227="L43" class=1"line1ctrl_bas  89     >  ctrl_bas ass=1"line17name=7328"a8S_CAPTURm_DMA_ADDR 89     >  a8S_CAPTURm_DMA_ADDR" clids);
srune assnd_pcm" 1401ss="lin14l strucU147"> 1131401(esrune assnd_pcm" 1402ss="lin14l7ame="7469)oamp;e1402609.c#L1286"29" class="linercirq" class=deltrc12271= 7de=vo78 );
 1ids);
<7aro1227);
srune assnd_pcm" 1403ss="lin14l7ame="7469)+code=fl7tao14l7a>1403ss=quarte7_" cla
period_size"  == 1 id="L130" 1404ss="lin14l7ame="7469)=NULLe=v7 cl14l7a>140ize" class="ssref"">vgo=oi" class="line" error_ous_"seanupa> 1ids);
7(e<14l11>140ef">shw_"aram8">voi80le=voicaEvoiceaE);
 1ids);
<7aro1227);=quar29" class="lines=cirq" class=deltcii="L14" class="line" devrea=">voicedev1227fsrune assnd_pcm" 1407ss="lin14l/sis7709.c_constrai7t_m14l/s>140,    a href="sref">srune assnd_pcm" 1408ss="lin14l/sis7709.c_>  89140>(vods);
  91 LE14 7a>1417609." class="line" error_ous_"seanupa> 1ids);
141href="+code=v7ice" 79"+cod4" _A_chip_fre DC_RATEe=flags" d_pchip_fre " clids);
141141ice" " class="line" error_ous_enableoa> 1ids);
)>141ize" class="s7data"7vo s     >  apt_disable_dev0c " clids);
fsrune assnd_pcm" 1415ss="lin14 7ame="7164"> 134 st14 7a>141a href="sound/pci/id="L" c.5;
slib_malloc_"agdde14sre>1416*/ 1ids);
bytdde=flags" class=14ef">141 (e *srune assnd_pcm" 1418ss="lin14
srune assnd_pcm" 1419ss="lin14a>);
vods);
  91 LE14 7a>1427609.LE href "sref">s"ubstrea=s__dev0niss7719.c#L1077" __dev0nisde=peef">s"ubstrea=sano_(voiceppt_dev1227"129" class="lines=cirq" class=deltcii)ls">vods);
142ass=quarte7_"sref"">vvvvvvvvvvvvvvvvvvvvvvvvvconst7LE(period_size"  == 1 id="L130" 14 2ss="lin14 7ame="7293"> e *142atd4"7ls.ce *1423eriod_s,(srune assnd_pcm" 1424ss="lin14href="sound/pci/sis7715.14hre>142ize" class="sLE(srune assnd_pcm" 1425ss="lin14" 7ame="7226"> se;
<14" 7>142ruct s"ubstrea=srcirq" class=deltrc1227srune assnd_pcm" 1426ss="lin14 7ame="7273">  44   14 7a>142href="+code=period_si);
7 id="L104" 14 7ss="lin14="ds_pre"are_t"comm_"+co14="d>142 (e *voi80le=voicENOENTe=6874"> 134srune assnd_pcm" 1428ss="lin14ef">s"ubstrea=snd_pcm" c14ef">142>( 1ids);
period_size"  == 1 id="L130" 14 9ss="lin14" 7ame="7304"> 134  14" 7>142 (e *143 609."+code=period_si);
7 id="L104" 1431ss="lin14">srune as">voice *<14">s>143href="+code=v7href="sound/pci/sis77011Ths2user cef=specify which ine"cs should blaicesenssid thatonsan class="comment"> +code=voice" class1432ss="lin14> * *>1432609.a> * +code=voice" class1433ss="lin14/a> * */
 */
period_size" class14sre>143a hre>fl oamp7 LE */
1436*/ * +code=voice" class1437ss="lin14"sref"e=voice" class=""s14"sr>143 (e * 1ids);
<7ne"cs122711quar"line17name=7328"a8S_PRIMARY_CODEC_PRESENTe=6874"> 134 134 +code=voice" class1438ss="lin1417name=7389">  89 L 1417n>1438eriod_s,v href=rune assnd_a84"TERTIARY_CODEC_PRESENTe=6874"> 134143 (e * 1ids);
<7ne"cs1227f">period_size"  == 1 id="L130" 144ass="lin14span>
 1ids);
<7ne"cs12271"line17name=7328"a8S_PRIMARY_CODEC_PRESENTe=6874"> 134srune assnd_pcm" 14s2ss="lin14s<4096 /    int 1442609.c#L1286"29" class="linercirq" class=deltrc12271= 7de=vo78 );
 134srune assnd_pcm" 1443ss="lin14/s(1443ss=quarte7_" cla
srune assnd_pcm" 1444ss="lin14s(14s144ize" class="ssref"">vgo=oi" class="line" error_ouss7719.c#L1077" error_ous1227="+code=period_si);
7 id="L104" 1445ss="lin1417ame="7469">  89 L 1417a>144a href="sound/pci/id="L" c.5;
shw_"aram8">voi80le=voicatrcpyDC_RATEe=flags" trcpy" clids);
 1ids);
<7aro1227="L14" class="line" drivamDC_RATEe=flags"drivam1227);
flds"SiS="L1"  77srune assnd_pcm" 1447ss="lin14t. 12 samples seemsstoag14t. >144 (e *);
 1ids);
<7aro1227="L14" class="line" shortmsstDC_RATEe=flags" hortmsst1227);
flds"SiS="L1"  77srune assnd_pcm" 1448ss="lin14und/pci/sis7709.c#L1297"14und>144>();
 1ids);
<7aro1227);
fsrune assnd_pcm" 1449ss="lin14/sis77019.c#L507" id="L514/si>144 (e *period_size"  == 1 id="L130" 145ass="lin14  *roughaut> * fvirtual 14  *>145 609.c#L1286"7id="L77go=oi" class="line" 7aro_error_ouss7719.c#L1077" 7aro_error_ous1227="+code=period_si);
7 id="L104" 14 1ss="lin14 two inte7rupts backstoa14 tw>1451(esrune assnd_pcm" 14 2ss="lin14refcts of any jitte7. Ad14ref>1452609.c#L1286"29" class="line"_ADC_RATEe=flags" class=as">vods);
 1ids);
<7aro1227="L43" class=1"line1srivat ound/pci/sis7609.c#Lsrivat ound/1227="+code=period_si);
7 id="L104" 14 3ss="lin14flast "sref" is at least14fla>145ice" a href="sref">srune assnd_pcm" 14 4ss="lin14);
period_size"  == 1 id="L130" 1456ss="lin14 needstoaus fvirtual "sr14 ne>145ode=period_size"a hrego=oi" class="line" 7aro_error_ouss7719.c#L1077" 7aro_error_ous1227="+code=period_si);
7 id="L104" 14 7ss="lin14i/sis7709.c#L1287" id="L14i/s>145,    a href="sref">srune assnd_pcm" 14 8ss="lin14(145>();
145 (e *period_size"  == 1 id="L130" 146ass="lin14a href=taile=voice" clas14a h>146 609.c#L1286"7id="L77go=oi" class="line" 7aro_error_ouss7719.c#L1077" 7aro_error_ous1227="+code=period_si);
7 id="L104" 1461ss="lin14a href=quarte7_"sref"e=v14a h>1461(esrune assnd_pcm" 1462ss="lin14 7name=7693">  93  814 7n>1462609.c#L1286"29" class="line"nsrintfDC_RATEe=flags" Esrintf" clids);
 1ids);
<7aro1227="L14" class="line" longmsstDC_RATEe=flags"longmsst1227);sizeof(ds);
 1ids);
<7aro1227="L14" class="line" longmsstDC_RATEe=flags"longmsst1227))ls">vods);
(1463609.c#L1286"""""""""""""""""
flds"%s Audio Acceleratorewith=%s at 0x%lx, irq %d"  77vods);
146ize" class="ssref"">vc#L1286"29" class="line7aroa> 1ids);
<7aro1227="L14" class="line" shortmsstDC_RATEe=flags" hortmsst1227);
de=vo78 );
vods);
1465*/
vc#L1286"29" class="line"_ADC_RATEe=flags" class=="L43" class=1"line1ioports7719.c#L1077" ioport1227,c7de=vo78 146href="+code=period_si);
7 id="L104" 1467ss="lin14i/e=voice"int 146 (e *);
 1ids);
<7aro1227)="+code=period_si);
7 id="L104" 1468ss="lin14  strucU147ef="sound7pci14  s>146>(146 (e * 111
<14i/e>147 609."+code=period_si);
7 id="L104" 1471ss="lin14 7ame="7273">  44147href="+code=v7ice" 79"+cod4"ppt_set/drvund/pci/sis7609.c#Lspt_set/drvund/" clids);
)"29" class="line7aroa> 1ids);
<7aro1227)="+code=period_si);
7 id="L104" 1472ss="lin14ure_open4"7 (       7tru14ure>147atd4"> (ess="linf="+code=period_si);
7 id="L104" 1473ss="lin14  strucU1474"> 134  14  s>147ice" a href="sref">srune assnd_pcm" 1474ss="lin14o)111
7ref="dse=7oic14o)1>147lass=" class="line" 7aro_error_ouss7719.c#L1077" 7aro_error_ous1227:assAtill nSet our initial "sref1475ss="lin14refcts of a>voice147ruct );
 1ids);
<7aro1227)="+code=period_si);
7 id="L104" 1476ss="lin14i/sis7709.c"+code=vo7ce"14i/s>147href="+code=period_si);
7 id="L104" 1477ss="lin14111
147>(s"ubstrea=srcirq" class=deltrc1227srune assnd_pcm" 1479ss="lin14  strucU1474ref="+codann14  s>147"L1107a href="sref">srune assnd_pcm" 148ass="lin14" 7ame="703nded.
14" 7>148 609."+code=period_si);
7 id="L104" 1481ss="lin14 6ame="6227c#L626" i7="L14 6a>148ass=qLE hrefvoidref">s"ubstrea=s__devexiss7719.c#L1077" __devexis((voiceppt_dev1227"129" class="lines=cirq" class=deltciif">period_size"  == 1 id="L130" 1482ss="lin14ure_open4"7(oamp;e *14ure>148atd4"7ls.ce *1483eriod_s,);
);
f srune assnd_pcm" 1484ss="lin14i/sis7709.cf=NULLe=v7ice14i/s>148ize" class="s7data"7vo s);
)"29" class="lineNULL class="line" 7NULL1227 srune assnd_pcm" 1485ss="lin14111
1485ass=7a href="sref">srune assnd_pcm" 1486ss="lin14  strucU147ref="+cod7=fl14  s>148href="+code=period_si);
7 id="L104" 1487ss="lin14/a> *7(oa14/a>>148 (e( *  89148>(s"ubstrea=smsstDC_RATEe=flags"msst" cl1= 7de=vo78  134vods);
s"ubstrea=sid_tablea> 1ids);
vods);
s"ubstrea=sprob DC_RATEe=flags"prob " cl1= 7de=vo78 vods);
 113149ass=quarte7_".ef">s"ubstrea=sremov DC_RATEe=flags"remov " cl1= 7de=vo78  1ids);
<__devexis_p" clids);
vods);
149atd4"> (e.ef">s"ubstrea=sdrivamDC_RATEe=flags"drivam12271= 7ls.ce *1493eriod_s,v.ef">s"ubstrea=sp(irq" class=deltp(ass=1"line17name=7328"a8S_PM_OPS class="line" 7a8S_PM_OPS" cl)ls">vods);
149lass=wave_bas})ls">vods);
1495ass=}="+code=period_si);
7 id="L104" 1496ss="lin14111
7(e<14111>149href="+code=period_si);
7 id="L104" 1497ss="lin14i/sis7709.c_constrai7t_m14i/s>1497ss=q" class="line" module_ppt_drivamDC_RATEe=flags"module_ppt_drivam" clids);
srune assnd_pcm" 1498ss="lin14i/sis7709.c_>  89149>(


Ths2original LXR software by1ss6 href="srhttp://sf"rclforge.net/projects/lxmD>LXR u79runity)"this experiref=al vamsion by1 href="srmailto:lxm@_> ux.no">lxm@_> ux.no.
lxm._> ux.no kindly hosted by1 href="srhttp://www.redpill-_> pro.no">Redpill L> pro AS" cl) provider of L> uxvconsult339 and operationA serv0c s since 1995.