typedef struct _snd_ac97_template ac97_template_t;
 typedef struct _snd_ac97 ac97_t;
 
-enum ac97_pcm_cfg {
-       AC97_PCM_CFG_FRONT = 2,
-       AC97_PCM_CFG_REAR = 10,         /* alias surround */
-       AC97_PCM_CFG_LFE = 11,          /* center + lfe */
-       AC97_PCM_CFG_40 = 4,            /* front + rear */
-       AC97_PCM_CFG_51 = 6,            /* front + rear + center/lfe */
-       AC97_PCM_CFG_SPDIF = 20
-};
-
-/* PCM allocation */
-struct ac97_pcm {
-       ac97_bus_t *bus;
-       unsigned int stream: 1,            /* stream type: 1 = capture */
-                    exclusive: 1,         /* exclusive mode, don't override with other pcms */
-                    copy_flag: 1,         /* lowlevel driver must fill all entries */
-                    spdif: 1;             /* spdif pcm */
-       unsigned short aslots;             /* active slots */
-       unsigned int rates;                /* available rates */
-       struct {
-               unsigned short slots;      /* driver input: requested AC97 slot numbers */
-               unsigned short rslots[4];  /* allocated slots per codecs */
-               unsigned char rate_table[4];
-               ac97_t *codec[4];          /* allocated codecs */
-       } r[2];                            /* 0 = standard rates, 1 = double rates */
-       unsigned long private_value;       /* used by the hardware driver */
-};
-
 struct snd_ac97_build_ops {
        int (*build_3d) (ac97_t *ac97);
        int (*build_specific) (ac97_t *ac97);
 int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk, const char *override);
 int snd_ac97_set_rate(ac97_t *ac97, int reg, unsigned int rate);
 
+/*
+ * PCM allocation
+ */
+
+enum ac97_pcm_cfg {
+       AC97_PCM_CFG_FRONT = 2,
+       AC97_PCM_CFG_REAR = 10,         /* alias surround */
+       AC97_PCM_CFG_LFE = 11,          /* center + lfe */
+       AC97_PCM_CFG_40 = 4,            /* front + rear */
+       AC97_PCM_CFG_51 = 6,            /* front + rear + center/lfe */
+       AC97_PCM_CFG_SPDIF = 20
+};
+
+struct ac97_pcm {
+       ac97_bus_t *bus;
+       unsigned int stream: 1,            /* stream type: 1 = capture */
+                    exclusive: 1,         /* exclusive mode, don't override with other pcms */
+                    copy_flag: 1,         /* lowlevel driver must fill all entries */
+                    spdif: 1;             /* spdif pcm */
+       unsigned short aslots;             /* active slots */
+       unsigned int rates;                /* available rates */
+       struct {
+               unsigned short slots;      /* driver input: requested AC97 slot numbers */
+               unsigned short rslots[4];  /* allocated slots per codecs */
+               unsigned char rate_table[4];
+               ac97_t *codec[4];          /* allocated codecs */
+       } r[2];                            /* 0 = standard rates, 1 = double rates */
+       unsigned long private_value;       /* used by the hardware driver */
+};
+
 int snd_ac97_pcm_assign(ac97_bus_t *ac97,
                        unsigned short pcms_count,
                        const struct ac97_pcm *pcms);
 int snd_ac97_pcm_close(struct ac97_pcm *pcm);
 int snd_ac97_pcm_double_rate_rules(snd_pcm_runtime_t *runtime);
 
-struct ac97_enum {
-       unsigned char reg;
-       unsigned char shift_l;
-       unsigned char shift_r;
-       unsigned short mask;
-       const char **texts;
-};
-
 /* ad hoc AC97 device driver access */
 extern struct bus_type ac97_bus_type;
 
 
 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), .info = snd_ac97_info_volsw, \
   .get = snd_ac97_get_volsw, .put = snd_ac97_put_volsw, \
   .private_value = (reg) | ((shift_left) << 8) | ((shift_right) << 12) | ((mask) << 16) | ((invert) << 24) }
+
+struct ac97_enum {
+       unsigned char reg;
+       unsigned char shift_l;
+       unsigned char shift_r;
+       unsigned short mask;
+       const char **texts;
+};
+
 #define AC97_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts) \
 { .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
   .mask = xmask, .texts = xtexts }