linux/sound/ppc/snd_ps3.c
<<
>>
Prefs
   1/*
   2 * Audio support for PS3
   3 * Copyright (C) 2007 Sony Computer Entertainment Inc.
   4 * All rights reserved.
   5 * Copyright 2006, 2007 Sony Corporation
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License
   9 * as published by the Free Software Foundation; version 2 of the Licence.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program; if not, write to the Free Software
  18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  19 */
  20
  21#include <linux/dma-mapping.h>
  22#include <linux/dmapool.h>
  23#include <linux/gfp.h>
  24#include <linux/init.h>
  25#include <linux/interrupt.h>
  26#include <linux/io.h>
  27#include <linux/module.h>
  28
  29#include <sound/asound.h>
  30#include <sound/control.h>
  31#include <sound/core.h>
  32#include <sound/initval.h>
  33#include <sound/memalloc.h>
  34#include <sound/pcm.h>
  35#include <sound/pcm_params.h>
  36
  37#include <asm/dma.h>
  38#include <asm/firmware.h>
  39#include <asm/lv1call.h>
  40#include <asm/ps3.h>
  41#include <asm/ps3av.h>
  42
  43#include "snd_ps3.h"
  44#include "snd_ps3_reg.h"
  45
  46
  47/*
  48 * global
  49 */
  50static struct snd_ps3_card_info the_card;
  51
  52static int snd_ps3_start_delay = CONFIG_SND_PS3_DEFAULT_START_DELAY;
  53
  54module_param_named(start_delay, snd_ps3_start_delay, uint, 0644);
  55MODULE_PARM_DESC(start_delay, "time to insert silent data in ms");
  56
  57static int index = SNDRV_DEFAULT_IDX1;
  58static char *id = SNDRV_DEFAULT_STR1;
  59
  60module_param(index, int, 0444);
  61MODULE_PARM_DESC(index, "Index value for PS3 soundchip.");
  62module_param(id, charp, 0444);
  63MODULE_PARM_DESC(id, "ID string for PS3 soundchip.");
  64
  65
  66/*
  67 * PS3 audio register access
  68 */
  69static inline u32 read_reg(unsigned int reg)
  70{
  71        return in_be32(the_card.mapped_mmio_vaddr + reg);
  72}
  73static inline void write_reg(unsigned int reg, u32 val)
  74{
  75        out_be32(the_card.mapped_mmio_vaddr + reg, val);
  76}
  77static inline void update_reg(unsigned int reg, u32 or_val)
  78{
  79        u32 newval = read_reg(reg) | or_val;
  80        write_reg(reg, newval);
  81}
  82static inline void update_mask_reg(unsigned int reg, u32 mask, u32 or_val)
  83{
  84        u32 newval = (read_reg(reg) & mask) | or_val;
  85        write_reg(reg, newval);
  86}
  87
  88/*
  89 * ALSA defs
  90 */
  91static const struct snd_pcm_hardware snd_ps3_pcm_hw = {
  92        .info = (SNDRV_PCM_INFO_MMAP |
  93                 SNDRV_PCM_INFO_NONINTERLEAVED |
  94                 SNDRV_PCM_INFO_MMAP_VALID),
  95        .formats = (SNDRV_PCM_FMTBIT_S16_BE |
  96                    SNDRV_PCM_FMTBIT_S24_BE),
  97        .rates = (SNDRV_PCM_RATE_44100 |
  98                  SNDRV_PCM_RATE_48000 |
  99                  SNDRV_PCM_RATE_88200 |
 100                  SNDRV_PCM_RATE_96000),
 101        .rate_min = 44100,
 102        .rate_max = 96000,
 103
 104        .channels_min = 2, /* stereo only */
 105        .channels_max = 2,
 106
 107        .buffer_bytes_max = PS3_AUDIO_FIFO_SIZE * 64,
 108
 109        /* interrupt by four stages */
 110        .period_bytes_min = PS3_AUDIO_FIFO_STAGE_SIZE * 4,
 111        .period_bytes_max = PS3_AUDIO_FIFO_STAGE_SIZE * 4,
 112
 113        .periods_min = 16,
 114        .periods_max = 32, /* buffer_size_max/ period_bytes_max */
 115
 116        .fifo_size = PS3_AUDIO_FIFO_SIZE
 117};
 118
 119static int snd_ps3_verify_dma_stop(struct snd_ps3_card_info *card,
 120                                   int count, int force_stop)
 121{
 122        int dma_ch, done, retries, stop_forced = 0;
 123        uint32_t status;
 124
 125        for (dma_ch = 0; dma_ch < 8; dma_ch++) {
 126                retries = count;
 127                do {
 128                        status = read_reg(PS3_AUDIO_KICK(dma_ch)) &
 129                                PS3_AUDIO_KICK_STATUS_MASK;
 130                        switch (status) {
 131                        case PS3_AUDIO_KICK_STATUS_DONE:
 132                        case PS3_AUDIO_KICK_STATUS_NOTIFY:
 133                        case PS3_AUDIO_KICK_STATUS_CLEAR:
 134                        case PS3_AUDIO_KICK_STATUS_ERROR:
 135                                done = 1;
 136                                break;
 137                        default:
 138                                done = 0;
 139                                udelay(10);
 140                        }
 141                } while (!done && --retries);
 142                if (!retries && force_stop) {
 143                        pr_info("%s: DMA ch %d is not stopped.",
 144                                __func__, dma_ch);
 145                        /* last resort. force to stop dma.
 146                         *  NOTE: this cause DMA done interrupts
 147                         */
 148                        update_reg(PS3_AUDIO_CONFIG, PS3_AUDIO_CONFIG_CLEAR);
 149                        stop_forced = 1;
 150                }
 151        }
 152        return stop_forced;
 153}
 154
 155/*
 156 * wait for all dma is done.
 157 * NOTE: caller should reset card->running before call.
 158 *       If not, the interrupt handler will re-start DMA,
 159 *       then DMA is never stopped.
 160 */
 161static void snd_ps3_wait_for_dma_stop(struct snd_ps3_card_info *card)
 162{
 163        int stop_forced;
 164        /*
 165         * wait for the last dma is done
 166         */
 167
 168        /*
 169         * expected maximum DMA done time is 5.7ms + something (DMA itself).
 170         * 5.7ms is from 16bit/sample 2ch 44.1Khz; the time next
 171         * DMA kick event would occur.
 172         */
 173        stop_forced = snd_ps3_verify_dma_stop(card, 700, 1);
 174
 175        /*
 176         * clear outstanding interrupts.
 177         */
 178        update_reg(PS3_AUDIO_INTR_0, 0);
 179        update_reg(PS3_AUDIO_AX_IS, 0);
 180
 181        /*
 182         *revert CLEAR bit since it will not reset automatically after DMA stop
 183         */
 184        if (stop_forced)
 185                update_mask_reg(PS3_AUDIO_CONFIG, ~PS3_AUDIO_CONFIG_CLEAR, 0);
 186        /* ensure the hardware sees changes */
 187        wmb();
 188}
 189
 190static void snd_ps3_kick_dma(struct snd_ps3_card_info *card)
 191{
 192
 193        update_reg(PS3_AUDIO_KICK(0), PS3_AUDIO_KICK_REQUEST);
 194        /* ensure the hardware sees the change */
 195        wmb();
 196}
 197
 198/*
 199 * convert virtual addr to ioif bus addr.
 200 */
 201static dma_addr_t v_to_bus(struct snd_ps3_card_info *card, void *paddr, int ch)
 202{
 203        return card->dma_start_bus_addr[ch] +
 204                (paddr - card->dma_start_vaddr[ch]);
 205};
 206
 207
 208/*
 209 * increment ring buffer pointer.
 210 * NOTE: caller must hold write spinlock
 211 */
 212static void snd_ps3_bump_buffer(struct snd_ps3_card_info *card,
 213                                enum snd_ps3_ch ch, size_t byte_count,
 214                                int stage)
 215{
 216        if (!stage)
 217                card->dma_last_transfer_vaddr[ch] =
 218                        card->dma_next_transfer_vaddr[ch];
 219        card->dma_next_transfer_vaddr[ch] += byte_count;
 220        if ((card->dma_start_vaddr[ch] + (card->dma_buffer_size / 2)) <=
 221            card->dma_next_transfer_vaddr[ch]) {
 222                card->dma_next_transfer_vaddr[ch] = card->dma_start_vaddr[ch];
 223        }
 224}
 225/*
 226 * setup dmac to send data to audio and attenuate samples on the ring buffer
 227 */
 228static int snd_ps3_program_dma(struct snd_ps3_card_info *card,
 229                               enum snd_ps3_dma_filltype filltype)
 230{
 231        /* this dmac does not support over 4G */
 232        uint32_t dma_addr;
 233        int fill_stages, dma_ch, stage;
 234        enum snd_ps3_ch ch;
 235        uint32_t ch0_kick_event = 0; /* initialize to mute gcc */
 236        void *start_vaddr;
 237        unsigned long irqsave;
 238        int silent = 0;
 239
 240        switch (filltype) {
 241        case SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL:
 242                silent = 1;
 243                /* intentionally fall thru */
 244        case SND_PS3_DMA_FILLTYPE_FIRSTFILL:
 245                ch0_kick_event = PS3_AUDIO_KICK_EVENT_ALWAYS;
 246                break;
 247
 248        case SND_PS3_DMA_FILLTYPE_SILENT_RUNNING:
 249                silent = 1;
 250                /* intentionally fall thru */
 251        case SND_PS3_DMA_FILLTYPE_RUNNING:
 252                ch0_kick_event = PS3_AUDIO_KICK_EVENT_SERIALOUT0_EMPTY;
 253                break;
 254        }
 255
 256        snd_ps3_verify_dma_stop(card, 700, 0);
 257        fill_stages = 4;
 258        spin_lock_irqsave(&card->dma_lock, irqsave);
 259        for (ch = 0; ch < 2; ch++) {
 260                start_vaddr = card->dma_next_transfer_vaddr[0];
 261                for (stage = 0; stage < fill_stages; stage++) {
 262                        dma_ch = stage * 2 + ch;
 263                        if (silent)
 264                                dma_addr = card->null_buffer_start_dma_addr;
 265                        else
 266                                dma_addr =
 267                                v_to_bus(card,
 268                                         card->dma_next_transfer_vaddr[ch],
 269                                         ch);
 270
 271                        write_reg(PS3_AUDIO_SOURCE(dma_ch),
 272                                  (PS3_AUDIO_SOURCE_TARGET_SYSTEM_MEMORY |
 273                                   dma_addr));
 274
 275                        /* dst: fixed to 3wire#0 */
 276                        if (ch == 0)
 277                                write_reg(PS3_AUDIO_DEST(dma_ch),
 278                                          (PS3_AUDIO_DEST_TARGET_AUDIOFIFO |
 279                                           PS3_AUDIO_AO_3W_LDATA(0)));
 280                        else
 281                                write_reg(PS3_AUDIO_DEST(dma_ch),
 282                                          (PS3_AUDIO_DEST_TARGET_AUDIOFIFO |
 283                                           PS3_AUDIO_AO_3W_RDATA(0)));
 284
 285                        /* count always 1 DMA block (1/2 stage = 128 bytes) */
 286                        write_reg(PS3_AUDIO_DMASIZE(dma_ch), 0);
 287                        /* bump pointer if needed */
 288                        if (!silent)
 289                                snd_ps3_bump_buffer(card, ch,
 290                                                    PS3_AUDIO_DMAC_BLOCK_SIZE,
 291                                                    stage);
 292
 293                        /* kick event  */
 294                        if (dma_ch == 0)
 295                                write_reg(PS3_AUDIO_KICK(dma_ch),
 296                                          ch0_kick_event);
 297                        else
 298                                write_reg(PS3_AUDIO_KICK(dma_ch),
 299                                          PS3_AUDIO_KICK_EVENT_AUDIO_DMA(dma_ch
 300                                                                         - 1) |
 301                                          PS3_AUDIO_KICK_REQUEST);
 302                }
 303        }
 304        /* ensure the hardware sees the change */
 305        wmb();
 306        spin_unlock_irqrestore(&card->dma_lock, irqsave);
 307
 308        return 0;
 309}
 310
 311/*
 312 * Interrupt handler
 313 */
 314static irqreturn_t snd_ps3_interrupt(int irq, void *dev_id)
 315{
 316
 317        uint32_t port_intr;
 318        int underflow_occured = 0;
 319        struct snd_ps3_card_info *card = dev_id;
 320
 321        if (!card->running) {
 322                update_reg(PS3_AUDIO_AX_IS, 0);
 323                update_reg(PS3_AUDIO_INTR_0, 0);
 324                return IRQ_HANDLED;
 325        }
 326
 327        port_intr = read_reg(PS3_AUDIO_AX_IS);
 328        /*
 329         *serial buffer empty detected (every 4 times),
 330         *program next dma and kick it
 331         */
 332        if (port_intr & PS3_AUDIO_AX_IE_ASOBEIE(0)) {
 333                write_reg(PS3_AUDIO_AX_IS, PS3_AUDIO_AX_IE_ASOBEIE(0));
 334                if (port_intr & PS3_AUDIO_AX_IE_ASOBUIE(0)) {
 335                        write_reg(PS3_AUDIO_AX_IS, port_intr);
 336                        underflow_occured = 1;
 337                }
 338                if (card->silent) {
 339                        /* we are still in silent time */
 340                        snd_ps3_program_dma(card,
 341                                (underflow_occured) ?
 342                                SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL :
 343                                SND_PS3_DMA_FILLTYPE_SILENT_RUNNING);
 344                        snd_ps3_kick_dma(card);
 345                        card->silent--;
 346                } else {
 347                        snd_ps3_program_dma(card,
 348                                (underflow_occured) ?
 349                                SND_PS3_DMA_FILLTYPE_FIRSTFILL :
 350                                SND_PS3_DMA_FILLTYPE_RUNNING);
 351                        snd_ps3_kick_dma(card);
 352                        snd_pcm_period_elapsed(card->substream);
 353                }
 354        } else if (port_intr & PS3_AUDIO_AX_IE_ASOBUIE(0)) {
 355                write_reg(PS3_AUDIO_AX_IS, PS3_AUDIO_AX_IE_ASOBUIE(0));
 356                /*
 357                 * serial out underflow, but buffer empty not detected.
 358                 * in this case, fill fifo with 0 to recover.  After
 359                 * filling dummy data, serial automatically start to
 360                 * consume them and then will generate normal buffer
 361                 * empty interrupts.
 362                 * If both buffer underflow and buffer empty are occurred,
 363                 * it is better to do nomal data transfer than empty one
 364                 */
 365                snd_ps3_program_dma(card,
 366                                    SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL);
 367                snd_ps3_kick_dma(card);
 368                snd_ps3_program_dma(card,
 369                                    SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL);
 370                snd_ps3_kick_dma(card);
 371        }
 372        /* clear interrupt cause */
 373        return IRQ_HANDLED;
 374};
 375
 376/*
 377 * audio mute on/off
 378 * mute_on : 0 output enabled
 379 *           1 mute
 380 */
 381static int snd_ps3_mute(int mute_on)
 382{
 383        return ps3av_audio_mute(mute_on);
 384}
 385
 386/*
 387 * av setting
 388 * NOTE: calling this function may generate audio interrupt.
 389 */
 390static int snd_ps3_change_avsetting(struct snd_ps3_card_info *card)
 391{
 392        int ret, retries, i;
 393        pr_debug("%s: start\n", __func__);
 394
 395        ret = ps3av_set_audio_mode(card->avs.avs_audio_ch,
 396                                  card->avs.avs_audio_rate,
 397                                  card->avs.avs_audio_width,
 398                                  card->avs.avs_audio_format,
 399                                  card->avs.avs_audio_source);
 400        /*
 401         * Reset the following unwanted settings:
 402         */
 403
 404        /* disable all 3wire buffers */
 405        update_mask_reg(PS3_AUDIO_AO_3WMCTRL,
 406                        ~(PS3_AUDIO_AO_3WMCTRL_ASOEN(0) |
 407                          PS3_AUDIO_AO_3WMCTRL_ASOEN(1) |
 408                          PS3_AUDIO_AO_3WMCTRL_ASOEN(2) |
 409                          PS3_AUDIO_AO_3WMCTRL_ASOEN(3)),
 410                        0);
 411        wmb();  /* ensure the hardware sees the change */
 412        /* wait for actually stopped */
 413        retries = 1000;
 414        while ((read_reg(PS3_AUDIO_AO_3WMCTRL) &
 415                (PS3_AUDIO_AO_3WMCTRL_ASORUN(0) |
 416                 PS3_AUDIO_AO_3WMCTRL_ASORUN(1) |
 417                 PS3_AUDIO_AO_3WMCTRL_ASORUN(2) |
 418                 PS3_AUDIO_AO_3WMCTRL_ASORUN(3))) &&
 419               --retries) {
 420                udelay(1);
 421        }
 422
 423        /* reset buffer pointer */
 424        for (i = 0; i < 4; i++) {
 425                update_reg(PS3_AUDIO_AO_3WCTRL(i),
 426                           PS3_AUDIO_AO_3WCTRL_ASOBRST_RESET);
 427                udelay(10);
 428        }
 429        wmb(); /* ensure the hardware actually start resetting */
 430
 431        /* enable 3wire#0 buffer */
 432        update_reg(PS3_AUDIO_AO_3WMCTRL, PS3_AUDIO_AO_3WMCTRL_ASOEN(0));
 433
 434
 435        /* In 24bit mode,ALSA inserts a zero byte at first byte of per sample */
 436        update_mask_reg(PS3_AUDIO_AO_3WCTRL(0),
 437                        ~PS3_AUDIO_AO_3WCTRL_ASODF,
 438                        PS3_AUDIO_AO_3WCTRL_ASODF_LSB);
 439        update_mask_reg(PS3_AUDIO_AO_SPDCTRL(0),
 440                        ~PS3_AUDIO_AO_SPDCTRL_SPODF,
 441                        PS3_AUDIO_AO_SPDCTRL_SPODF_LSB);
 442        /* ensure all the setting above is written back to register */
 443        wmb();
 444        /* avsetting driver altered AX_IE, caller must reset it if you want */
 445        pr_debug("%s: end\n", __func__);
 446        return ret;
 447}
 448
 449/*
 450 *  set sampling rate according to the substream
 451 */
 452static int snd_ps3_set_avsetting(struct snd_pcm_substream *substream)
 453{
 454        struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream);
 455        struct snd_ps3_avsetting_info avs;
 456        int ret;
 457
 458        avs = card->avs;
 459
 460        pr_debug("%s: called freq=%d width=%d\n", __func__,
 461                 substream->runtime->rate,
 462                 snd_pcm_format_width(substream->runtime->format));
 463
 464        pr_debug("%s: before freq=%d width=%d\n", __func__,
 465                 card->avs.avs_audio_rate, card->avs.avs_audio_width);
 466
 467        /* sample rate */
 468        switch (substream->runtime->rate) {
 469        case 44100:
 470                avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_44K;
 471                break;
 472        case 48000:
 473                avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_48K;
 474                break;
 475        case 88200:
 476                avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_88K;
 477                break;
478c#L478" id="L478"id="L366_U63_AUDIO_AO_SPDu21nd/ppc/snd_ps3.las47]4de=PS3_AUDIO_AX_IE_)c/snd_> 476                avs_audio_rate =  374 321        if (!463
 464        snd_ps3_mut4(48                      467        /* sample rate */
avs_audio_rate =  483port_intr);
<4io_mute" 4lass="sref">ps3av_audio_4ute 34>mute_on<4a>);
card->avs_aud href>);
 386runtime->rate,
 462                  468
sub168K;
rate) {
avs. 476                snd_ps3_ch4nge_a49e=avs_audio_rate" class="sref">avs_audio_rate = snd_ps34card_49f">PS3AV_CMD_AUDIO248K;
 392  4     491"> 471                break;
avs.avs_audio_rate = avs_audio_rate = &qu4t;%s: start\n"<4span>4 ps3av_se4_audio_mode(car       if (!463
 464        card->runtime->rate,
 462                 avs_audio_rate = card-pdate_rr" class="sref">port_intr);
<4         4        car324" class="line" name="L324"> 35         5       a5s_aud50AO_3WMCTRL_ASOEN(3)),
avs_audio_rate = /*5/span>
udelay<5       * 5eset the following unwan5ed se501"> 471  substream);
5" class="line" name="L465"> 465                 , N5" class="line"+code=card" class="sref">, sizeof"+code=rate" cla href="sound/ppc/snd_ps3.)ma8" class="line" name="L468"> 468<5s3.c#L4025 id="L402" class="line" 5ame="50e=avs_audio_rate" clacode=format" class="sref">format));
 463
 464         403
&quoate" clacode=format" cle freq=%d width=%d\n", __func__,
 465                 card->avs.5ine" name5"L405"> 405        <5 href50ass="sref">card-> 406       5" class="line" name="L465"> 465                 "id="L366_U63_AUDI457"> 457
 407       _ps3.c#L467" id=hrefppc/snd_ps3.c#L389" id="L389" class="line" name="L389"> 3895" class="line" name="L465"> 465      ode=avs_audio_rate" class="sref">5i9s3.c#L457        408       _ps3.c#L462" id=s="sref">__func__);
/* wait5_ps3.c#L459" id="L409" class="line5 name5"L409"> 409/* wait5_=avs_aud5L_ASOEN" class="sref">PS5_AUDI51e=avs_audio_rate" cla_ps3.c#L462" id=s="sref">__func__);
port_intr);
<5#L411" id5"L411" class="line" name5"L41151="+code=udelay" class="sref">udelay<5 sees the5change */
 42check CS non-me="L3> 43 cla/ppc/c#L449" ily>);

 414        w5ile (5format));ne" nnd_ps3.c#L_analoe91ound/ppc/snd_ps3.c#L428" id=/ppc/subnon-me="L3);
ref"  /* wait5_ps3.c#L453.c#L416" id="L416" clas5="lin5" name="L416"> 4165" class="line"ine" nnd_ps3.c#L_analoef">format));ne" nnd_ps3.c#L_analoe9ST_RESET" class="sref">PS3_AUDIO_A5ppc/snd_p53.c#L417" id="L417" clas5="lin51   return  418   _debug("%s: end\n",  35 class="s5ef">retries) {
 35 L411" id5> 420               5 447}
 362* PCM opne" ors" name="L447"> 447}
 422
 363 424  5     5or (
 3ound/ppcime51 */
 452static int " class="line" name="L468"> 468<5 id="L4265 class="line" name="L4265> 4265/a>           51 *="L462" class="line" nment"> *="L462"2" id="L452" class="l="L462" class="line" name="L462">rate,
nd\n", substream)
 453{
 454        struct ,                 5a hre5="+code=udelaym
format));me=index62">nd\n", 5429        wmb(); /* 53AO_3WMCTRL_ASOEN(3)),
format));me=index62">rate,
format));med/ppc/snd_ps3.c#L462" iddevis3.c#L399" id="L3devis362">nd\n",  430
 441                        PS3_AUDIO_AO_SPDCTRL_SPODF_LSB);
( 442rd);
 352<rate,
PS3_AUDIO_AO_3WMCTR5_ASOEN 444    ="L462" class="line" name="L462"> 462            hw class="line" nhwa>{
, card-> 436         442rd);
 4_"+code=PS3_AUDIO_AO_""> 4_"+coda>{
 4_"+code=PS3_AUDIO_AO_"snd_ppc""> 4_"+codd/ppnd\n",  438 /ppc/snd_ps3.c#L428" id=/ppc/off>PS3_AUDIO_AO_SPDCTRL_SPODF_LSB);
 439        PS3_AUDIO_AO_SPDCTRL_SPODF_LSB);
wmb 353.c#L441"5id="L441" class="line" n5me="L54und/ppc/snd_ps3.c#L431" id="e" name=hw_"comtra        struct , 0465" class="line"SNDRV_PCM_HW_PARAM_BUFFER_BYTEUDIO_AX_IE_ASOBUSNDRV_PCM_HW_PARAM_BUFFER_BYTEUe="L464"> 464         4165" class="line"ass="sref"FIFO_STAG/a>,ZEame="L422]4de=PS3_="sref"FIFO_STAG/a>,ZE3" id= 4d= 2sref"", /* wait5nd/ppc/sn5_ps3.c#L444" id="L444" c5ass="5ine" ns3.c#L373" id="L373" class="line"5445  5     card->__func__);
<5 href=ubstream
51 */
 452static int  446<5a>   5    re" class="line" name="L468"> 468<5sref">ret5/a>;
 438 /ppc/snd_ps3.c#L428" id=/ppc/on>PS3_AUDIO_AO_SPDCTRL_SPODF_LSB);
/5
/* wait5mment"> *5 set sampling rate accor5ing t5 the ss3.c#L373" id="L373" class="line"5ng" class5"sref">snd_ps3_set_avset5ingsubstream->snd_pcm_substream5/a> *5a hrefubstream
51 */
 452static int <464"> 464        card<5a> = 55an class="string">&quoate" claaaaaaaaa51 *hw_paramref="sound/ppc/sound/me 4555/a>  55ref">" class="line" name="L468"> 468<5a5s55code=update_mame="L442"> 442size_string">"&#size_sode=uame="L442"> 442sizetring">"&#sized/ppnd\n",  556 4585     55438"> 438 /ppc/snd_ps3.c#L428" id=alloc transport
 = 5ard->"&#sized/pp        struct pr_debug5/a>(<56AO_3WMCTRL_ASOEN(3)),
"&#sized/ppand\n",  *5          /* wait5mat_width5/a>(runti5e56EN" class="sref">PS3_AUDIO_AO_3WMCTR5de=pr_deb5g" class="sref">pr_debug5/a>(<56r (
51 */
 452static int " class="line" name="L468"> 468<5e=avs" cl5ss="sref">avs.snd_ps3_avsetting_info5"L466" cl5ss="line" name="L466"> 45656       int __func__);
        struct ,  418   _debug("%s: end\n", runtime->avs. 35="+code=P53AV_CMD_AUDIO_FS_44K" cl5ss="s57the substream
51 */
 452static int <464"> 464         471                            unsignedam
avs. 468<5="+code=P53AV_CMD_AUDIO_FS_48K" cl5ss="s5ef">PS3AV_CMD_ href="+code=snd_ps3_avsetting_info" class="sref">snd_ps3_avsetting_info53.c#L474"5id="L474" class="line" n5me="L57    struct snd_ps3_avsetting_info53=avs" cl5ass="sref">avs.rate,
span>
snd_ps3_avsetting_info53>       5id="L477" class="line" n5me="L57438"> 438               ss="sref">__func__);
"&#sund/me->size>        struct  462                  464         375
 462             namnelref="sound/ppc/s namnelr="L4sref">snd_ps3_avsetting_info5#L381" id5"L381" class="line" name5"L38158="+code=udelay" class="sref">udelay<5ps3_mute"5class="sref">snd_ps3_mut5(58lass="line" name="L442"> 442ass="sref">format));

udelay<5pe=avs" c5ass="line" name="L383"> 583 464        ps3av_audio_5ute&quopan>
 464        );
 415                ppc/snd_ps3.c#L461" id="L461" class="line" name="L461"> 4615ppc/snd_p53.c#L385" id="L385" clas5="lin58 name="L416"> 416                ound/me->sizetring">"&#sund/me->size>        struct  462                  386 417                sppc/snd_ps3.c#L468" id="L4 *span>
 408                       ss="sref">__func__);
sref"", snd_ps3_ch5nge_a591
snd_ps3_avsetting_info5s3_card_i5fo" class="sref">snd_ps35card_59the ss3.c#L373" id="L373" class="line"5Ts3_mute"5" name="L392"> 392  5     59ass="sref">substream->
51 */
 452static int &qu5t;%s: start\n"<5span>5  468<5>ps3av_se5_audio_mode( *="L462" class="line" nment"> *="L462"2" id="L452" class="l="L462" class="line" name="L462">rate,
nd\n",            51)
 453{
 454        struct , cunsignedalong href="sound/ppcirqsav" class="line" nirqsav"62">nd\n", avs6         6        4    struct  468<6e=avs_aud6o_source" class="sref">a6s_aud60e=avs_audio_rate" cla_th" class="sref">avs_audiome parame, bl name=span class="comment">/* ensure the hardwar6mment">/*6/span>
 321        if (! 4    struct ="L4s="line" name="ass="sref">="L4"L461" class="line" name="L461"> 4616       * 6eset the following unwan6ed se601"> 471                        struct ="L4ss="sEL4s="line" name="ass="sref">="L4ss="sEL41"> 4O_3WMCTRL) &
="L4ss="sUL4s="line" name="ass="sref">="L4ss="sUL41"> 4O_sref"",  403
&qu401" id="L401" class="ne" name="L447"> 447}
 405        <6 href60ass="ine" name="L363"> 363 447}
 363 42with iome silens362name="L447"> 447}
 363/* ensure the hardwar6m9e" name6"        408       _ps3.c#L462" idrd);
"&#silensa>{
"L452" class="line" name="L452"> 452static int <464"> 464        );
 4_"+code=PS3_AUDIO_AO_""> 4_"+coda>{
) /64"> 464        PS6_AUDI61e=avs_audio_rate" claaaaaaaaa4    struct ,ZEame="L422]4de=PS3_="sref"FIFO_STAG/a>,ZE3" id= 4ound/ppc/snd_ps3.c#L428" id="very 4c="L4s/*n class="comment">/* ensure the hardwar6#L411" id6"L411" class="line" name6"L41161name="L321"> 324" class="line" name="L324"> 36 sees the6change */
substream->
 428" id/* ensure the hardwar6#ine" nam6"L414"> 414        w6ile (6N5" class="line" name="L465"> 465                 sref"", " class="line" name="L468"> 468<6_ps3.c#L463.c#L416" id="L416" clas6="lin6" name="L416"> 4165" class="line" name="L465"> 465                 "&#dma_{
 462            dma_< idref="sound/ppc/sdma_< idr62">nd\n",  408       _ps3.c#L462" idrd);
);
retries) {
 440                        ~rd);
 4_vaddref="sound/ppc/s"ma_""> 4_vaddr/ppc[ps3.c#L352" id=SND_S3_=CH_TRL_ASODF_LSB 420               6subst                     ~="L462" class="line" name="L462"> 462            dma_aic ef="sound/ppc/s"ma_aic 62">nd\n",  471                break;
);
 4_bus_addref="sound/ppc/s"ma_""> 4_bus_addr/ppc[ps3.c#L352" id=SND_S3_=CH_TRL_ASODF_LSB 462            dma_addref="sound/ppc/s"ma_addr/ppcnd\n",  422
PS3_AUDIO_AO_3WMCTR6lass="lin6" name="L424"> 424  6     62a href="+code=read_re5" class="line"rd);
 415 """""""_ps3.c#L462" idrd);
card->);
 4_vaddref="sound/ppc/s"ma_""> 4_vaddr/ppc[ps3.c#L352" id=SND_S3_=CH_RRL_ASODF_LSB);
 417                      ~="L462" class="line" name="L462"> 462            dma_aic ef="sound/ppc/s"ma_aic 62"> +a4    struct  462            dma_< idref="sound/ppc/sdma_< idr62"> / 2sref"",                 6a hre62L408"> 408       _ps3.c#L462" idrd);
 4_bus_addref="sound/ppc/s"ma_""> 4_bus_addr/ppc[ps3.c#L352" id=SND_S3_=CH_RRL_ASODF_LSB6429 462            dma_addref="sound/ppc/s"ma_addr/ppc +a4    struct  462            dma_< idref="sound/ppc/sdma_< idr62"> / 2sref"", wmb(); /* 63d/ppc24" class="line" name="L324"> 36dL411" id6name="L430"> 430
 321        if (!format));

 464         471                   _ps3.c#L467" idrd);
 4_vaddref="sound/ppc/s"ma_""> 4_vaddr/ppc[ps3.c#L352" id=SND_S3_=CH_TRL_ASODF_LSB 464        );
 4_bus_addref="sound/ppc/s"ma_""> 4_bus_addr/ppc[ps3.c#L352" id=SND_S3_=CH_TRL_ASODF_LSB, , 324" class="line" name="L324"> 36ne" name=6L436"> 436         442"pin_unlock_irqre8"ord_ps3.c#L380" id=pin_unlock_irqre8"ord9N5" class="line" name="L465"> 465                 sref"",  438 /ppc/snd_ps3.c#L428" id=ensure the h>  waic sees the  name=/*n class="comment">/* ensure the hardwar6" name="L639"> 439        sref"", wmb 363.c#L441"6id="L441" class="line" n6me="L64am" class="sr_debug<    /* wait6ref="soun6/ppc/snd_ps3.c#L442" id=6L442"64ass="s3.c#L373" id="L373" class="line"6above is 6ritten back to register 6/PS3_AUDIO_AO_3WMCTR6nd/ppc/sn6_ps3.c#L444" id="L444" c6ass="64r (
51 */
 452static int <464"> 464         415 """"""""""""""m
 465 464        __func__);
<6 href=" class="line" name="L468"> 468<646" class6"line" name="L446"> 446<6a>   64/ppc/snd_ps3.substream" class="sref">substream)
 453{
 454        struct , ret6/a>;

__func__);
/* wait6ppc/snd_p63.c#L448" id="L448" clas6="lin65        /6
 465" class="line" name="L468"> 468<6mment"> *6 set sampling rate accor6ing t65f">PS3AV_CMD_AUDIOps3.c#L352" id=SNDRV_PCM_TRIGGER_STARTRL_ASODF_LSBPS8K;
snd_ps3_set_avset6ing 471           s="line" name="L421"> 42clear outubsn9" ie/* ensure the hardwar6am" class6"sref">snd_pcm_substream6/a> *65e=avs_audio_rate" clacode=format" clupdaO class="line" name="updaO clas>        struct ="LUDIO_AX_IE_ASOBUass="sref">="LU_for4 ST_RESET" class="sref">PS3_AUDIO_A6ef="+code6card" class="sref">card<6a> = 65ne" nef"",  4556/a>  65ard" class="sref">car       if (!N5" class="line" name="L465"> 465                 PS3_AUDIO_A6ee" name=6code=avs" class="sref">a6s65 class="sref">card 468<6m6" class6ass="line" name="L456"> 656 417                      ~ name="L465"> 465                 );
port_intr);
<6 class="l6ne" name="L458"> 4586     65L408"> 408       324" class="line" name="L324"> 36/a> = 66de=rate" class="sref">rate) {
N5" class="line" name="L465"> 465                 PS3_AUDIO_A6de=pr_deb6g" class="sref">pr_debug6/a>(<66d/ppc24" class="line" name="L324"> 36dment"> *6           321        if (!        struct  465      464"> 464         416Ops3.c#L352" id=SND_S3_=DMA_FILLTYP/a>,LENT_FIRSTFILLRL_ASODF_LSB,LENT_FIRSTFILL_forT_RESET" class="sref">PS3_AUDIO_A6dm" class6time" class="sref">runti6e66e=avs_audio_rate" clacode=format" clound/ppckick5"maef="sound/ppc/sound/ppckick5"ma>        struct  465      T_RESET" class="sref">PS3_AUDIO_A6df="+code6g" class="sref">pr_debug6/a>(<66a href="+code=read_rewhilea4    struct     7))353" cRESET" class="sref">PS3_AUDIO_A6d55" clas6ate,  415 """"""    struct " class="line" name="L468"> 468<6e=avs" cl6ss="sref">avs.card->{
i          -- 46666 name="L417"> 417324" class="line" name="L324"> 36/class="l6switch ( 408       _ps3.c#L462" idound/ppcirogr 45"maef="sound/ppc/sound/ppcirogr 45"ma>        struct  465      4Ops3.c#L352" id=SND_S3_=DMA_FILLTYP/a>,LENT_RUNNINGRL_ASODF_LSB,LENT_RUNNING    T_RESET" class="sref">PS3_AUDIO_A6 class="s6ef">runtime->rate) {
        struct  465      T_RESET" class="sref">PS3_AUDIO_A6de=avs" c6ass="sref">avs.avs_audio_rate = udelay<63.c#L471"6id="L471" class="line" n6me="L671"> 471  AUDIOps3.c#L352" id=SNDRV_PCM_TRIGGER_STOPRL_ASODF_LSBPS8K;
avs.N5" class="line" name="L465"> 465                 PS3_AUDIO_A6="+code=P63AV_CMD_AUDIO_FS_48K" cl6ss="s67a href="+code=read_re" class="line" name="L468"> 468<63.c#L474"6id="L474" class="line" n6me="L67 name="L415"> 415 """""""_ps3.c#L462" idrd);
);
/* wait63=avs" cl6ass="sref">avs.card 36="+code=P63AV_CMD_AUDIO_FS_88K" cl6ss="s67L407"> 407       _ps3.c#L467" id=pin_unlock_ps3.c#L380" id=pin_unlock9N5" class="line" name="L465"> 465                 PS3_AUDIO_A63>       6id="L477" class="line" n6me="L67L408"> 408       _ps3.c#L462" idound/ppcwait_"ma_""oL454" class="line" nappcwait_"ma_""oL>        struct  465      T_RESET" class="sref">PS3_AUDIO_A6"comment"6 * mute_on : 0 output en6bled<68de=rate" class="sref"ss="sref">avs_audio_rate =  376 321 ss="sref">avs_audio_rate = snd_ps3_mut6(68ass="sref">substream-> 683 36io_mute" 6lass="sref">ps3av_audio_6ute, );
_debugsnd_ps3_avsetting_info6ppc/snd_p63.c#L385" id="L385" clas6="lin68 names3.c#L373" id="L373" class="line"6 name="L366"> 386       6ref="sound/ppc/snd_ps3.c6L388"68L408"401" id="L401" class="ne" name="L447"> 447}
 362* report
curr62 447}
 376 class="sref">snd_ps3_ch6nge_a691
 363snd_ps36card_69the substreahref="sound/ppc/snd_ps3uframdr_string">"&#ssnd_ps3uframdr_sname=pan>
 392  6     691"> 471  51 */
 452static int  464         468<6ring">&qu6t;%s: start\n"<6span>695"> 471  51)
 453{
 454        struct , ("&#size_sode=uame="L442"> 442< idref="sound/ppc/s< idr62">nd\n",  442"snd_ps3uframdr_string">"&#ssnd_ps3uframdr_sname=pan>
snd_ps3_avsetting_info6ename="L36          &69   return  454snd_ps3_avsetti8#L46267 clas[6o        struct  46L36 iass="sref">PS3_ng">"&#ssnd_ps3uframdr2,(58lass="line" name="L442""L461" class="line" nameo1d7s3.c#L451" id="L451" cla7s="li7e" name="L451"> 4    st" class="sref"",        6id="L477" class="line" n6me="L67L4in61   return  408       _ps3.c#L462" idrd);
}
 471                   _ps3.c#L467" idrd);
<  struct  46L36 ia3nameo1d7s"&#ssnd_ps3uframdr7_SPO 7las1"> 4    sta> = ="sref">avs.card 36="+code=P63AV_CMD_AUDIO_FS_88K" cl6ss="s67L407"> 407       _ps3.c#L467" id=pin_unlock_ps3.c#L380" id=pin_7avs_audio7rate" cla              s7ruct 70/a>->,  470L454"> 454        struct>
nd\n;, nd\nund/ppc/snd_ps3.c#L453" id="L453" class="line" name="L453="L462" class="line" nment"> *="L462"2" id="L452" cla=s6bstre66L408"> ",         76 href60ass="ine" name="7363">70" n5me="L57    struct  36io_mute" 6lass="sref">ps3av_audio_6ute, }
_debug
);
 386 447assus bits controhref"L366"> 386 362* report
curr62 724" c71" id="L373" class="line"5Ts3_mute"5" naspdif_maskcode=pr_deb6g" cl69e=avs" clspdif_maskcode=und/pa href="+c6se=avs" c6    468<6rkcontrohpr_deb6g" cl69ekcontroh" nade6subst66name="L321"> 321  7 actua6ly7stopped */
 468<6ruode=pr_deb6g" cl69euode=" na  691"> 471  51        7        sref""7"&#size_sode=uauode=pr_deb6g" cl69euode=" na="L462" class="line"typ"> *="L462"2" idtyp"snd_ps3.c#L468" id="L4code=uCTL_ELEM_d/ppcIEC9ck_forT_RESs67="+code=uCTL_ELEM_d/ppcIEC9ckio_6ute, {
ps3av_cef"ssnd_ps3me="L456"> 656 7_< idref=7sound/ppc/sdma_< idr62">7d\n&q71ib_fred_pagdr>      ss="line" n6me="L67 name="L415"> 7shre_vadd7ef="sound/ppc/s"ma_last_7ransh7e_vadda> =  465                 72FO_STef="sound/ppc/snd_ps3./* FIXME: hreav+code=udio_mine() d/puo_raonly conpuo_r mineL362"> 362* report
curr62ps3av_te"5" naspdif_cmaskcgasund/pa href="+c6se=avs" c6    468<6rkcontrohpr_deb6g" cl69ekcontroh" nade6subst66name="L321"> 321  7_T/ppc] =7              ~="L462" c7ass="72 hass="sref">="L4ss="sEL4s="lin         a href="+c6se=avs" c6    468<6rucontrohpr_deb6g" cl69eucontroh" na  691"> 471  51 454        structmemsass="sref">ps3av_memsasund/ppc/snd_ps3.c#L4ucontrohpr_deb6g" cl69eucontroh" na="L462" class="line"valua6s="li63 name="valua" na.2" class="line"iec9ck_forT_RESs67="+iec9ck" na.2" class="line"7assus6s="li63 name="Lassus cla=s0xff, 82" id=5L442"54                   7shre_vadd7ef="sound/ppc/s"ma_next_7ransh7e_vaddr/ppc[ps>      ss="line" n6me="L67 name="L415"> 7sa>{
74_vadda> = cunsignedalong href="sound/p7_""> 4_bu7_addref="sound/ppc/s"ma_7"> 4_7us_add"L373" class="line"5Ts3_mute"5" naspdif_pmaskcgass="sref">ps3av_te"5" naspdif_pmaskcgasund/pa href="+c6se=avs" c6    468<6rkcontrohpr_deb6g" cl69ekcontroh" nade6subst66name="L321"> 321  7+a4    st7uct  468<6rucontrohpr_deb6g" cl69eucontroh" na  691"> 471  51 / 2s7ef"&q7ot;
      ss="line" n6me="L67 name="L415"> 7 id="ma_"7> 4_vaddref="sound/ppc/s7ma_""7 4_vada> =  4_bu7_addref="sound/ppc/s"ma_7"> 4_7us_addr/ppc[ps3.c#L352" id=SND_S3_=CH7TRL_ASODF7LSBps3av_te"5" naspdif_ * mutecgasund/pa href="+c6se=avs" c6    468<6rkcontrohpr_deb6g" cl69ekcontroh" nade6subst66name="L321"> 321  7+hre_vadd7ppc6snd_p63ne" nef""7 468<6rucontrohpr_deb6g" cl69eucontroh" na  691"> 471  51{
s7ef"&q73d_ps3_avsetting_info6enamemcpKICK_STATUS_MASKmemcpKund/ppc/snd_ps3.c#L4ucontrohpr_deb6g" cl69eucontroh" na="L462" class="line"valua6s="li63 name="valua" na.2" class="line"iec9ck_forT_RESs67="+iec9ck" na.2" class="line"7assus6s="li63 name="Lassus cla=s2" class="line"hreav+mine_cscode=pr_deb6g" cl69ehreav+mine_cscode= cla=s82" id=5L442"54                   7 id="L4387 class="line"6name=6L4387> 4387/a> /ppc/snd_p>      ss="line" n6me="L67 name="L415"> 7nsure the7hardwar6" name="L639"> 4797      a> = s7ef"&q74_A6de=avs" c6ass="sref">avs.ps3av_te"5" naspdif_ * mutecpusund/pa href="+c6se=avs" c6    468<6rkcontrohpr_deb6g" cl69ekcontroh" nade6subst66name="L321"> 321  7" n6me="L74am" class="sr_debug<   7="L4ss="sEL4s="lin           a href="+c6se=avs" c6    468<6rucontrohpr_deb6g" cl69eucontroh" na  691"> 471  51 */
 7na>{
 465 474/* wait63=avs" cl6ass>      me="L456"> 656 7_ps3.c#L474" id="L454" class="line7 name7"L454"> 454 = ret6/a>;
 7ef="s=s="7ref">__func__);
 = /6
avs.PS3AV_CMD_AUDIOp73.c#L75ne" n"L373" a href="+c6se=avs" c6    /pp="sref">avs.snd_p73_set_avset6ing 4717          s="late" classubs!span class="commen7esnd_ps3.7 class="line" name="upda7 clas75> 465            .2" class="line"accesio_rate" cla*spaaccesisnd_ps3.c#L468" id="L4code=uCTL_ELEM_ACCESS_READ_forT_RESs67="+code=uCTL_ELEM_ACCESS_READ" nade6subst66name="L321"> 321  7AX_IE_ASO7Uass="sref">="LU_for4 ST7RESET7 class="sref">PS3_AUDI.2" class="line"ifaca6s="li63 name="ifacasnd_ps3.c#L468" id="L4code=uCTL_ELEM_IFACEudel_forT_RESs67="+code=uCTL_ELEM_IFACEudel" nade6subst66name="L321"> 321  7A     5" class="line" nam7="L467"> 465            .2" class="line"ne" _forT_RESs67="+ne" snd_ps3.c#L468" id="L4code=uCTL_NAMpcIEC9ck_forT_RESs67="+code=uCTL_NAMpcIEC9ckund/pp4" class="line" name="L324"a 6ref="63name="L321"> 321 321  7Aa>{
PS7_AUDIO_A6ee" name=6cod.2" class="line"ide=pr_deb6g" cl69eode=" nam        321  7Aps3.c#L47                  ~ name7"L4657> 465             .2" class="line"gass="sref">ps3av_gc/snd_ps3.c#L468" id="L4sref" naspdif_cmaskcgass="sref">ps3av_te"5" naspdif_cmaskcgasund/de6subst66name="L321"> 321  7 crunn#L47);
po7t_int7);
<6 clas}de6subst66name="L321"> 321  7 f="s=s="7N5" class="line" nam7="L46761        s="late" classubs!span class="commen7a_lockef=7sound/ppc/s"ma_lock_forT7RESET7 class="sref">PS3_AUDI.2" class="line"accesio_rate" cla*spaaccesisnd_ps3.c#L468" id="L4code=uCTL_ELEM_ACCESS_READ_forT_RESs67="+code=uCTL_ELEM_ACCESS_READ" nade6subst66name="L321"> 321  7     if (7 321  7/a>Ops3.c7L352" id=SND_S3_=DMA_FIL7TYP/a7,LENT_FIRSTFILLRL_ASOD.2" class="line"ne" _forT_RESs67="+ne" snd_ps3.c#L468" id="L4code=uCTL_NAMpcIEC9ck_forT_RESs67="+code=uCTL_NAMpcIEC9ckund/pp4" class="line" name="L324"a 6ref="63name="L321"> 321 321  7clacode=f7rmat" clound/ppckick5"ma7f="so7nd/ppc/sound/ppckick5".2" class="line"ide=pr_deb6g" cl69eode=" nam        321  7t ps3av_gc/snd_ps3.c#L468" id="L4sref" naspdif_pmaskcgass="sref">ps3av_te"5" naspdif_pmaskcgasund/de6subst66name="L321"> 321  7t      """"""    struc7  321  7 a>{
avs.card 321  7      4Op73.c#L352" id=SND_S3_=DMA7FILLT7P/a>,LENT_RUNNINGRL_AS.2" class="line"ne" _forT_RESs67="+ne" snd_ps3.c#L468" id="L4code=uCTL_NAMpcIEC9ck_forT_RESs67="+code=uCTL_NAMpcIEC9ckund/pp4" class="line" name="L324"a 6ref="63name="L321"> 321 465DEFAUL>" na de6subst66name="L321"> 321  7ef">rate<7a>) {
 321  75    7 T_RESET" class="sref">P73_AUD77class="sref">PS3_AUDI.2" class="line"gass="sref">ps3av_gc/snd_ps3.c#L468" id="L4sref" naspdif_ * mutecgass="sref">ps3av_te"5" naspdif_ * mutecgasund/de6subst66name="L321"> 321  75    if (7avs_audio_rate" class="s7ef">a77ppc/sound/ppcirogr 45.2" class="line"puss="sref">ps3av_pusund/ps3.c#L468" id="L4sref" naspdif_ * mutecpuss="sref">ps3av_te"5" naspdif_ * mutecpusund/de6subst66name="L321"> 321  75a>Ops3.c7me="L671"> 471  AUDI7ps3.c7L352" id=SNDRV}de6subst66name="L321"> 321  7_lock95" class="line" nam7="L467"> 465d_ps68 name="L415">_debugPS7_AUDIOps68 name="L415">_debug       _ps3.c#dr6op4> /pp="sref">avs.nnd_ps36carspdif_op408       _ps3.c#ps36carspdif_op4und/ps3ate" classubs!span class="commen7 crunn#L47);
       _popenund/ps3.c#L468" id="L4sref" na#dr6open08       _psref" na#dr6openund/de6subst66name="L321"> 321  75ps3.c#L47N5" class="line" nam7="L467"> 465    .2" class="line"clos _forT_RESs67="+clos und/ps3.c#L468" id="L4sref" na#dr6clos _forT_RESs67="+sref" na#dr6clos und/de6subst66name="L321"> 321  7ound/ppcw7it_"ma_""oL454" clas7="lin7" nappcwait 321  7of">rate<7 T_RESET" class="sref">P73_AUD7O_A6"comment"6.2" class="line"hw_ard_i408       _phw_ard_i4und/ps3.c#L468" id="L4sref" na#dr6hw_ard_i408       _psref" na#dr6hw_ard_i4und/de6subst66name="L321"> 321  7o    7ef"ss="sref">avs_audio_r7te 321  7o    if (7lt8K;
 321  7oa>Ops3.c7me="L321"> 321 ss="s7ef">a7s_audio_ratePS3_ps3.c#L468" id="L4sref" na#dr6ack to register 6/PS3_de6subst66name="L321"> 321  7olock9(68ass="sref">su7strea785 snd_ps36card_69the subde6subst66name="L321"> 321  7oc/s"ma_l7"> 683_debug);
sn7_ps3_avsetting_info6ppc/snd_p63.c7L385" id=7L385" clas6="lin68 names7.c#L373" id="L373" class="line"5Ts3_mu__clasniss="sref">ps3av___clasnis> /pp="sref">avs.nnd_ps3map_mmi=pr_deb6g" cl69e=avs" clmap_mmi=und/pvoid  691"> 471  51  7    6rate" classubs!span class="commen7 href="so7nd6TE: calli6g this func7ion m79_A6"comment"62" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"mapped_mmi=+c6g(PS3_AUDIO_A6de=pr_deb6gioremappr_deb6g" cl69eioremapund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"mT_REion08       _pmT_REion" na="L462" class="line"c6gor actua6="+code=PS33WM6TRL_A63ede6subst66name="L321"> 321  7dr_string7>"&#ssnd_ps3uframdr7sname79ppc/sound/ppcirogr 45"ma>    pc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"mT_REion08       _pmT_REion" na="L462" class="line"len08       _plenund/es="line" n6me="L67 name="L415"> 7s="commen7"> */
/* wait6ref="soun6/pp7 name="L472"> 452static int  474        < hre!2" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"mapped_mmi=+c6g(PS3_AUDIO_A6ef="+code6cprcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4ioremap 0 failed p0"> 430 430
format 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"mT_REion08       _pmT_REion" na="L462" class="line"lardor actua6="+code=PS3lardor acA63ede6subst66name="L321"> 321  7dsnd_ps3_7442"> 442"snd_ps3uframdr7strin79AUDIO_A6ee" name=6code=avs" pc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"mT_REion08       _pmT_REion" na="L462" class="line"len08       _plenund/es="line" n6me="L67 name="L415"> 7s385" id=7_avsetting_info" class="7ref">79retries6"L466" cl6ss=>      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 8ass="sref8>PS3_ng">"&#ssnd_ps8ufram8r2,(58lass="lia> = }
wmb 363.c#L441"6id="L441" class="lin8> 4718                       s8ruct 80lass="comment">/* wait6ref="soun6/pp8avs_audio8rate" cla              s8ruct 80" id="L373" voidp="sref">avs.nnd_ps3unmap_mmi=pr_deb6g" cl69e=avs" clunmap_mmi=und/pvoid  691"> 471  51,  480snd_ps3.c#L452" id="L452" class="line8>        86 href60ass="ine" name="8363">80string">"&#size_sode=uaiounmappr_deb6g" cl69eiounmapund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"mapped_mmi=+c6g( 442"snd_ps3uframdr8e6"L480d_ps3_avsetting_info53=aahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"mapped_mmi=+c6g( 8a9       86avsetting_info" class="8    <8 href=d="line" n6me="L67 name="L415"> 8d_ppc"+co8_to_" idref="sound/ppc/s8und/p81c/6nd_ps64"+code=udelaym
);
ps3av___clasnis> /pp="sref">avs.nnd_ps3allocn clirqpr_deb6g" cl69e=avs" clallocn clirqund/pvoid  691"> 471  51,ZEame="L422]4de=PS3_=8sref"81t; 8s="line" 8ame6"L41161name="L321"> 824" c81 hass="sref">="sref">avsuL352" id=SN cl69eu,LENT_F2" class="line"lardor actua6="+code=PS3lardor acA63edF2" class="line"lardos3_ctua6="+code=PS3lardos3_card_s="line" n6me="L67 name="L415"> 8svs_audio8stopped */
avsuL352" id=SN cl69eu,LENT_F2" class="line"__iomeL453" class="lin__iomeLENT_Fe="L468"> 468<6rmappeda>( 8san>, _debugsref""8"f="sound/ppc/snd_ps3./* FIXME: mov" idis to clascclinis (H/W probe)L362"> 362* report
curr62{
8d\n&q81t;,  362* report
curr62 /ppc/snd_ps3.c#L428" id=e>
6ena>
82t;, wmb();ode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4clascc map 1 failed "> 36d>
 321        if (!format));
    pc/snd_ps3.c#L4>
="L4ss=">      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 8ma_addref8"sound/ppc/s"ma_addr/ppc8d\n&q82> 465    d="line" n6me="L67 name="L415"> 8shre_vadd8ef="sound/ppc/s"ma_last_8ransh82AUDIOps68 name="L415">_debug"&#size_sode=uamappeda>(828A6"comment"6 hre!2" class="line"mappeda>( 465                  36dL4ioremap 1 failed >
 321        if (!format<=363.c#L441"6id="L441" class="lin8_""> 4_bu8_addref="sound/ppc/s"ma_8"> 4_83/a>,LENT_RUNNINGRL_AS>      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 8+a4    st8uct  8ref="soun8/ppc/sdma_< idr62"> / 2s8ef"&q83_A6de=avs" c6ass="sref">avs.
53=aahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"=udio_irq_M_Tlet36="+code=P63AV=udio_irq_M_Tletard_ps3.c#L468" id="L4in_beL352" id=SN cl69ein_beL3und/ppc/snd_ps3.c#L4mappeda>( 8+="line" 8> 4_vaddref="sound/ppc/s8ma_""83lass="comment">/* wait6ref="soun6/pp8_""> 4_bu8_addref="sound/ppc/s"ma_8"> 4_83> 465    ="sref">avsiounmappr_deb6g" cl69eiounmapund/ppc/snd_ps3.c#L4mappeda>( 8+hre_vadd8LSB 454        struct>
 8+hre_vadd8ppc6snd_p63ne" nef""86ena>
 8+a>{
avsprcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4unmap 1 failed>
 321        if (!format<=363.c#L441"6id="L441" class="lin8_< idref=8ass="line" nirqsav"62">s8ef"&q83="sref">cunsignedalong href="sound/p8 id="L4388 class="line"6name=6L4388> 4388/a> /ppc/snd_p href="+coo6dpc/snd_p63.cirqC362"> 362* report
curr62 48984_A6"comment"62" class="line">
));
s8ef"&q84audio_rate" cla_th" cccccccccccccccccc       6id="L47ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"=udio_irq_M_Tlet36="+code=P63AV=udio_irq_M_Tletard_/a>));
        strucass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"irq_n=pr_deb6g" cl69eorq_n=mat<=363.c#L441"6id="L441" class="lin8" n6me="L84am" class="sr_debug<   8 hreng_info6ena>
avsprcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL" clalloc_irq failed ("> 36d)>
 321        if (!format
 */
PS3_AUDIe="L324"> 36io_mute" 6lass="sref">ps3av_audio_6ute,  8na>{
 465 484ps3_avsetting_info6ppc/snd_p63.c8_ps3.c#L484" id="L454" class="line8 name84d_ps3_avsetting_info6ena>
 36="+code=P63AVahe_4"> " na.2" class="line"irq_n=pr_deb6g" cl69eorq_n=matps3av_te"5" na69therupsmat));
ret6/a>;
avs="sound/pRIVER_NAMps="sref">ps3av_="sound/pRIVER_NAMpA63edFass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na=363.c#L441"6id="L441" class="lin8ef="s=s="8ref">__func__);
6ena>
/6
, wmb();ode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4requestlirq failed ("> 36d)>
 321        if (!format
PS3AV_CMD_AUDIOp83.c#L85ppc/sound/ppcirogr 45gotoc       6id="L477leanuplirqpr_deb6g" cl69e7leanuplirqio_6ute, snd_p83_set_avset6ing 4818          s="ld="line" n6me="L67 name="L415"> 8esnd_ps3.8 class="line" name="upda8 clas85s_addr/ppc[ps3.c#L352" id=SND_S3_=CH8AX_IE_ASO8Uass="sref">="LU_for4 ST8RESET85ss="line" name="L324+coo6"f">wmb5" class="line" nam8="L4685" n5me="L57    struct PS8_AUDIO_       6id="L477leanuplirqpr_deb6g" cl69e7leanuplirqio_6_on : 0 output en6bled<68de=rate8Aps3.c#L48                  ~ name8"L46585d_ps3_avsetting_info6ena" clirq_plug+destroKICK_STATUS_MASK" clirq_plug+destroKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"irq_n=pr_deb6g" cl69eorq_n=mat<=363.c#L441"6id="L441" class="lin8 crunn#L48);
po8t_int86a> /ppc/snd_p>      "> 36io_mute" 6lass="sref">ps3av_audio_6ute, 5" class="line" nam8="L46861     363.c#L441"6id="L441" class="lin8a_lockef=8sound/ppc/s"ma_lock_forT8RESET86_A6de=avs" c6ass="sref">avs.avs.nnd_ps3fre lirqpr_deb6g" cl69e=avs" clfre lirqund/pvoid  691"> 471  51Ops3.c8L352" id=SND_S3_=DMA_FIL8TYP/a86snd_ps3.c#L452" id="L452" class="line8clacode=f8rmat" clound/ppckick5"ma8f="so86> 465    ="sref">avsfre lirqpr_deb6g" cl69efre lirqund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"irq_n=pr_deb6g" cl69eorq_n=mat 36="+code=P63AVahe_4"> " na=363.c#L441"6id="L441" class="lin8t  454        struct" clirq_plug+destroKICK_STATUS_MASK" clirq_plug+destroKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"irq_n=pr_deb6g" cl69eorq_n=mat<=363.c#L441"6id="L441" class="lin8       """"""    struc8  8 a>{
avs.avs__clasniss="sref">ps3av___clasnis> /pp="sref">avs.nnd_ps3audio_codebaseor actua6="+code=PS3.nnd_ps3audio_codebaseor acund/ppc/snd_ps3.c#L4u69t64href="+code=snd_pu69t64hr> /pp="sref">avsior acPS3_AUpr_deb6g" cl69eior acPS3_AUsnd_=="line" n6me="L67 name="L415"> 8      4Op83.c#L352" id=SND_S3_=DMA8FILLT87   6rate" classubs!span class="commen8ef">rate<8a>) {
avsvahpr_deb6g" cl69evahio_6ute,     8 T_RESET" class="sref">P83_AUD87class="sref">>        struct  85    if (8avs_audio_rate" class="s8ef">a87_p6#L381" id6"L381" class="line" nam85a>Ops3.c8me="L671"> 471  AUDI8ps3.c8L352" id=SNDRV="sref">avsvahpr_deb6g" cl69evahio_6quoppc/snd_ps3.c#L4ior acPS3_AUpr_deb6g" cl69eior acPS3_AUsnd_ ass=" (0x0fUL &l24"l24 32)) "L46"L46 (32 - 20) |381" id6"L381" class="line" nam85lacode=f8N5" class="line" nam8="L4687d/ppc/sound/ppckick5"(0x03UL &l24"l24 24) |381" id6"L381" class="line" nam85 PS87class="sref">PS3_AUDI(0x0fUL &l24"l24 12) |381" id6"L381" class="line" nam85     6ppc/snd_p63.c85ps3.c#L48N5" class="line" nam8="L4687d_ps3_avsetting_info6ena>
6ena>
 8of">rate<8 T_RESET" class="sref">P83_AUD88" name="L451"> 4    st" class="sref"();ode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4gpu_ate" butc failed "> 36d>
 321        if (!format));
avs_audio_r8te
 8oa>Ops3.c8me="L321"> 321 ss="s8ef">a88lass="comment">/* wait6ref="soun6/pp8olock9(68ass="sref">su8strea88" id="L373" voidp="sref">avs__clasniss="sref">ps3av___clasnis> /pp="sref">avs.nnd_ps3audio_fixuppr_deb6g" cl69e.nnd_ps3audio_fixupund/pa href="+c6se=avs" c6    code=pr_deb6g" cl69e=avs" cl4"> code=> /ppe="L468"> 468<6r4"> 36="+code=P63AV_CMD_AUD=="line" n6me="L67 name="L415"> 8o  683);
"f="sound/ppc/snd_ps3./*2"> 362* report
curr62sn8_ps3_a6ate a69     e" name="LLLLLLLLL* avcodt na driver seems to never chang" idc follow naref"L366"> 386 386  8    6r6ate a69     e" name="LLLLLLLLL*62"> 362* report
curr62    8 447}
 href="+coo6dpc/snd_p63.cno dma 69therups needed *62"> 362* report
curr62"&#ssnd_ps3uframdr8sname89#llx>
53=awriteT_RE36="+code=P63AVwriteT_REund/ppc/snd_ps3.c#L4 idrAUDIO_INTR_EN_0_forT_RESs67="+ idrAUDIO_INTR_EN_0mat */
/* wait6ref="soun6/pp8 name="L482"> 452static int  484        < href="+coo6dpc/snd_p63.cuse every 4 buffer empty 69therups *62"> 362* report
curr62 454        structupdn clmaskc_RE36="+code=P63AVupdn clmaskc_REund/ppc/snd_ps3.c#L4 idrAUDIO_AX_IC_forT_RESs67="+ idrAUDIO_AX_ICmat));
 321));
 442"snd_ps3uframdr8strin89AUDIO_A6ee" name=6code=avs" e="L321"> 32189="sref">cunsignedalong href="sound/p9ass="sref9>PS3_ng">"&#ssnd_ps9ufram90a> /ppc/snd_p href="+coo6dpc/snd_p63.cenable 3wire clocks *62"> 362* report
curr62));
}
      pc/snd_ps3.c#L4 idrAUDIO_AO_3WMCTR<_ASOLRCKD_DISABLED_forT_RESs67="+ idrAUDIO_AO_3WMCTR<_ASOLRCKD_DISABLEDsnd_=/a>));
 */
="L4ss="sEL4s="l0=363.c#L441"6id="L441" class="lin9avs_audio9rate" cla              s9ruct 90> 465    ="sref">avsupdn cl_RE36="+code=P63AVupdn cl_REund/ppc/snd_ps3.c#L4 idrAUDIO_AO_3WMCTR 490class="sref">PS3_AUDI   pc/snd_ps3.c#L4 idrAUDIO_AO_3WMCTR<_ASOPLRCK_DEFAUL> 465 idrAUDIO_AO_3WMCTR<_ASOPLRCK_DEFAUL>snd_=363.c#L441"6id="L441" class="lin9>        96 href60ass="ine" name="9363">90s="srd="line" n6me="L67 name="L415"> 9>8       9642"> 442"snd_ps3uframdr9e6"L490ps3_avsetting_info6ppc/snd_p63.c9a9       96avsetting_info" class="9    <90" id="L373" class="line"5Ts3_mu__clasniss="sref">ps3av___clasnis> /pp="sref">avs.nnd_ps3snis_avcodt nas="sref">ps3av_te"5" na69is_avcodt naund/pa href="+c6se=avs" c6    code=pr_deb6g" cl69e=avs" cl4"> code=> /ppe="L468"> 468<6r4"> 36="+code=P63AV_CMD_AUD=="line" n6me="L67 name="L415"> 9d_ppc"+co9_to_" idref="sound/ppc/s9und/p91   6rate" classubs!span class="commen9         9  struct );
 9FIFO_STAG9a>,ZEame="L422]4de=PS3_=9sref"912 465    ="sref">avspr_clbuas="sref">ps3av_pr_clbuaund/p24" class="line" name="L324"> 36dL4S3_AU>
 321        if (!format<=363.c#L441"6id="L441" class="lin9F3nameo1d9c="L4s/*n class="comment9>/* e91#llx>
53=a4"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3audio_ch36="+code=P63AVavc3audio_chsnd_ps3.c#L468" id="L4 idAV_CMD)AUDIO_NUM_OF_CH_2 465 idAV_CMD)AUDIO_NUM_OF_CH_2ard_s="line" n6me="L67 name="L415"> 9F4nameo1d9ame6"L41161name="L321"> 924" c91 hass="sref">="sref">avs4"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3audio_ratctua6="+code=PS3avc3audio_ratcsnd_ps3.c#L468" id="L4 idAV_CMD)AUDIO_FS_483" cRESET" class=idAV_CMD)AUDIO_FS_483ard_s="line" n6me="L67 name="L415"> 9Fvs_audio9stopped */
avs4"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3audio_width36="+code=P63AVavc3audio_widthsnd_ps3.c#L468" id="L4 idAV_CMD)AUDIO_WORD_BITS_         9F6s_audio9         454        struct4"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3audio_format36="+code=P63AV=vc3audio_formatsnd_ps3.c#L468" id="L4 idAV_CMD)AUDIO_FORMATudel_forT_RESs67="+ idAV_CMD)AUDIO_FORMATudelard_s="line" n6me="L67 name="L415"> 9F        9" nirqsav"62">sref""9"&#size_sode=ua4"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3audio_me=rca6s="li63 name="avc3audio_me=rcasnd_ps3.c#L468" id="L4 idAV_CMD)AUDIO_SOURCE_SERIA 9F8       9ef="sound/ppc="L462" cla9s="li91d_ps3_avsetting_info53=amemcpKICK_STATUS_MASKmemcpKund/ppc/snd_ps3.c#L44"> 36="+code=P63AV_CMD_AUD="L462" class="line"avc36="+code=P63AVavc" na.2" class="line"avc3cscode=pr_deb6g" cl69eavc3cscode=mat        struct" cav+mine_cscode=pr_deb6g" cl69ehreav+mine_cscode= cla=s82" id=5L442"54                   9_< idref=9sound/ppc/sdma_< idr62">9d\n&q91="sref">cunsignedalong href="sound/p9shre_vadd9ef="sound/ppc/s"ma_last_9ransh92a> /ppc/snd_ps3.c#L428" id=e>
ps3av_te"5" na4hang"_avcodt naund/ppc/snd_ps3.c#L44"> 36="+code=P63AV_CMD_AUD2" id=5L442"54                   9shre_vadd9ef="sound/ppc/s"ma_next_9ransh92> 465                 922 465    ="sref">avs.nnd_ps3audio_fixuppr_deb6g" cl69e.nnd_ps3audio_fixupund/ppc/snd_ps3.c#L44"> 36="+code=P63AV_CMD_AUD2" id=5L442"54                   9s3nameo1d9              ~="L462" c9ass="92_p6#L381" id6"L381" class="line" nam9s="line" 9              ~="L462" c9ass="92 hass="sref"> href="+coo6dpc/snd_p63.cto4S3_AUcto4generatc SPDIF signal, fill data *62"> 362* report
curr62 465    ="sref">avs.nnd_ps3program_dmapr_deb6g" cl69e.nnd_ps3program_dmaund/ppc/snd_ps3.c#L44"> 36="+code=P63AV_CMD_AUD/ >        struct="sound/pMA_FILLTYPE_SILENT_FIRSTFILL36="+code=P63AV="sound/pMA_FILLTYPE_SILENT_FIRSTFILL_AUD2" id=5L442"54                   9s6s_audio9ef="sound/ppc/s"ma_last_9ransh92L454"> 454        struct.nnd_ps3kick_dmapr_deb6g" cl69e.nnd_ps3kick_dmaund/ppc/snd_ps3.c#L44"> 36="+code=P63AV_CMD_AUD2" id=5L442"54                   9s        9ef="sound/ppc/s"ma_next_9ransh92string">"&#size_sode=uapr_clbuas="sref">ps3av_pr_clbuaund/p24" class="line" name="L324"> 36dL4end>
 321        if (!format<=363.c#L441"6id="L441" class="lin9sa>{
928A6"comment"6>      "> 36io_mute" 6lass="sref">ps3av_audio_6ute,  9_""> 4_bu9_addref="sound/ppc/s"ma_9"> 4_93c/6nd_ps64"+code=udelaym
ps3av___clasnis> /pp="sref">avs.nnd_ps3driver_probepr_deb6g" cl69e.nnd_ps3driver_probeund/pa href="+c6se=avs" c6 _ps3system_3WM6clasccpr_deb6g" cl69ehre3system_3WM6clascc> /ppe="L468"> 468<6r2"vpr_deb6g" cl69e2"v" na=="line" n6me="L67 name="L415"> 9ref="soun9/ppc/sdma_< idr62"> / 2s9ef"&q93t;        struct         structlass="sref">ps3av_audio_6ute,  4_vaddref="sound/ppc/s9ma_""93 hass="sref">="sref">avsuL352" id=SN cl69eu,LENT_F2" class="line"lardor actua6="+code=PS3lardor acA63edF2" class="line"lardos3_ctua6="+code=PS3lardos3_card_s="line" n6me="L67 name="L415"> 9_""> 4_bu9_addref="sound/ppc/s"ma_9"> 4_93s_addr/ppc[ps3.c#L352" id=SND_S3_=CH9+hre_vadd9LSB 454        structBUG_ONtua6="+code=PS3BUG_ONund/p!2" class="line"firmware_has_fea   ctua6="+code=PS3firmware_has_fea   cund/ppc/snd_ps3.c#L4FW_FEATUREound/LV1tua6="+code=PS3FW_FEATUREound/LV1" na==363.c#L441"6id="L441" class="lin9+hre_vadd9ppc6snd_p63ne" nef""9"&#size_sode=uaBUG_ONtua6="+code=PS3BUG_ONund/p="L468"> 468<6r2"vpr_deb6g" cl69e2"v" na="L462" class="line"match_ida>(s9ef"&q93d_ps3_avsetting_info6enaahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" naps3.c#L468" id="L42"vpr_deb6g" cl69e2"v" na363.c#L441"6id="L441" class="lin9 id="L4389 class="line"6name=6L4389> 43894c/6nd_ps64"+code=udelaym
 49994_A6"comment"62" class="line">
 468<6r2"vpr_deb6g" cl69e2"v" na=363.c#L441"6id="L441" class="lin9"+code=av9b class="line" nmb9s9ef"&q94_A6de=avs" c6ass="sref">avs.6ena>
 9" n6me="L94am" class="sr_debug<   9="L4ss=">      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 9/snd_ps3.9#L442" id=6L442"64ass="s9.c#L394s_addr/ppc[ps3.c#L352" id=SND_S3_=CH9s="commen9"> */
 href="+coo6dpc/snd_p63.ccodup MMIO *62"> 362* report
curr62"&#size_sode=ua>
 465 4948A6"comment"6 hreng_info6ena>
 36dL4clascc map 2 failed "> 36d>
 321        if (!format
ret6/a>;
       _p7lean6openetris="line" n6me="L67 name="L415"> 9ef="s=s="9ref">__func__);
 9lass="s6o9ment">/6
    ="sref">avsp clmmi=+_REion_sniss="sref">ps3av_p clmmi=+_REion_snisund/p="L468"> 468<6r2"vpr_deb6g" cl69e2"v" na/cpc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na="L462" class="line"mT_REion08       _pmT_REion" nadF2" class="line"lardor actua6="+code=PS3lardor acA63edF2" class="line"lardos3_ctua6="+code=PS3lardos3_card_/a>));
PS3AV_CMD_AUDIOp93.c#L95ppc/sound/ppcirogr 45.c#L468" id="L4 AGE_SHIF> 465 AGE_SHIF>snd_=363.c#L441"6id="L441" class="lin9r n6me="L93_set_avset6ing 49195lass="comment">/* wait6ref="soun6/pp9esnd_ps3.9 class="line" name="upda9 clas95> 465    ="sref">avs>
="LU_for4 ST9RESET95ss="line" nam hreng_info6ena>
 9A     5" class="line" nam9="L4695s="sref"KICK_STATUS_Mgotoc       6id="L477lean62"vlmappr_deb6g" cl69e7lean62"vlmapetris="line" n6me="L67 name="L415"> 9ea>{
PS95ps3_avsetting_info6ppc/snd_p63.c9Aps3.c#L49                  ~ name9"L46595t;,  362* report
curr62po9t_int96a> /ppc/snd_ps3.c#L428" id=ehre62ma+_REion_sniss="sref">ps3av_p cl2ma+_REion_snisund/p="L468"> 468<6r2"vpr_deb6g" cl69e2"v" na/cpc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" nad* report
curr625" class="line" nam9="L4696" name="L451"> 4    s/ppcirogr 45.c#L468" id="L4 AGE_SHIF> 465 AGE_SHIF>snd_,< href="+coo6dpc/snd_p63.cuse system page s3_c *62"> 362* report
curr62 362* report
curr62        .c#L468" id="L4NU ="L4ss="sEL4s="l    .c#L468" id="L4_ALIGN_UP if (! 468<6r="sound/pMA_REGION_SIZE36="+code=P63AV="sound/pMA_REGION_SIZE" na/cpc/snd_ps3.c#L4 AGE_SIZE36="+code=P63AV AGE_SIZE" na==363.c#L441"6id="L441" class="lin9clacode=f9rmat" clound/ppckick5"ma9f="so96> 465    ="sref">avs2"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" na="L462" class="line"ioida>(_debug """"""    struc9 "&#size_sode=ua>
 468<6r2"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" na=363.c#L441"6id="L441" class="lin9ca>{
avs.6ena>
 465                  36dL4_REion_creatc>
 321        if (!format<=363.c#L441"6id="L441" class="lin9      4Op93.c#L352" id=SND_S3_=DMA9FILLT97/a>,LENT_RUNNINGRL_ASgotoc       6id="L477lean6mmi=pr_deb6g" cl69e7lean6mmi=mat<363.c#L441"6id="L441" class="lin9ef">rate<9a>) {
 95    9 T_RESET" class="sref">P93_AUD97_A6de=avs" c6ass="sref">avs.a97#llx>
53=a.nnd_ps3audio_codebaseor actua6="+code=PS3.nnd_ps3audio_codebaseor acund/ppc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" na="L462" class="line"c6gor actua6="+code=PS33WM6TRL_A63e=363.c#L441"6id="L441" class="lin9  n6me="L9me="L671"> 471  AUDI9ps3.c97lass="comment">/* wait6ref="soun6/pp95lacode=f9N5" class="line" nam9="L4697        < href="+coo6dpc/snd_p63.cCONFIG_="sound/pEFAUL>_START/pELAY *62"> 362* report
curr62PS97L454"> 454        structahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"S3_AU62"laKICK_STATUS_MASKS3_AU62"laKsnd_ps3.c#L468" id="L4=avs" clS3_AU62"laKICK_STATUS_MASKSavs" clS3_AU62"laKmat<363.c#L441"6id="L441" class="lin9e      362* report
curr625" class="line" nam9="L4697d_ps3_avsetti hreng_info6ena.nnd_ps3allocn clirqpr_deb6g" cl69e=avs" clallocn clirqund/p)=rate" classubs!span class="commen9ound/ppcw9it_"ma_""oL454" clas9="lin98/a>,LENT_RUNNINGRL_AS;&#size_sode=ua>
       _pENXIOetris="line" n6me="L67 name="L415"> 9of">rate<9 T_RESET" class="sref">P93_AUD98" name="L451"> 4    sgotoc       6id="L477lean62ma+_REionpr_deb6g" cl69e7lean62ma+_REionetris="line" n6me="L67 name="L415"> 9o    9ef"ss="sref">avs_audio_r9te 9o    if (9lt8K;
Ops3.c9me="L321"> 321 ss="s9ef">a98 hass="sref"> href="+coo6dpc/snd_p63.ccreatc 4">  inS3_ncc *62"> 362* report
curr62(68ass="sref">su9strea98> 465    ="sref">avs>
 ccreatctua6="+code=PS3=avs4"> ccreatcund/ppc/snd_ps3.c#L4indexa>(( 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD2" id=5L442"54                   9o  6836ena>
 9href="+co96i.c#L474"6a>);
, sn98ps3_avsetting_info6ppc/snd_p63.c9L385" id=9L385" clas6="lin68 names9.c#L398d_ps3_avsetting_info6enane"cpKICK_STATUS_MASKne"cpKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD="L462" class="line"driver08       _pdriversnd_,< href="+coo6dne" name="L324und  99a> /ppc/snd_ps3.c#L428" id=ene"cpKICK_STATUS_MASKne"cpKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD="L462" class="line"short" clICK_STATUS_MASKnhort" clsnd_,< href="+coo6dne" name="L324undrate<9nd6TE: calli6g this func9ion m99_A6"comment"62" class="line"ne"cpKICK_STATUS_MASKne"cpKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD="L462" class="line"long" clICK_STATUS_MASKlong" clsnd_,< href="+coo6dne" name="L324und 54       9 447}
avs."&#ssnd_ps3uframdr9sname99#llx>
 362* report
curr62 */
foroppc/snd_ps3.c#L4ia>( 452static int  499d/ppc/sound/ppckick5"="sref">avs>
 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUDd* report
curr62PS3_AUDI   sound/ppckick5"="sref">avs=avs4tl6new1tua6="+code=PS3=avs4tl6new1und/pass="line" name="L32spdif_ctlc36="+code=P63AVspdif_ctlc_AUD[     struct  36="+code=P63AVahe_4"> " na=2" id=5L442"54                   9 ref="+co9rd" class="s    struct <9 hriz99s="sref"KICK_STATUS_M hreng_info6ena>
 9_snd_ps3_9442"> 442"snd_ps3uframdr9strin99AUDIO_A6ee" name=6code=avs" egotoc       6id="L477lean64"> 36="+code=P63AV_lean64"> io_6ute, 99d_ps3_avsettid="line" n6me="L67 name="L415"> 10ass="sref10ass=etting_info" class="10ass>10asA6de=a/pre>
"line" n6me="L67 name="L415"> 10a1s="sref10ad6TE: calli6g this func10ad6>10a1llx>
 362* report
curr6210aclass="sref"> href="+coo6dpc/snd_p63.cNOTE:this driver works cooum na pcm:subne"eamps31:1 *62"> 362* report
curr62 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUDd* report
curr62 >10a hass="sref">="L4ss="sEL4s="l   href="+coo6dne" name="L324SPDIF 452static int >10ad/ppc/sound/ppckick5"""""""""""0,< href="+coo6dpc/snd_p63.cinS3_ncc index, will be stored pcm.clascc*62"> 362* report
curr6210aclass="sref">PS3_AUDI   sound/p1,< href="+coo6dpc/snd_p63.coutput subne"eamp*62"> 362* report
curr6210as="sref"KICK_STATUS_MASKDIO_e""0,< href="+coo6dpc/snd_p63.cinput subne"eamp*62"> 362* report
curr62 442"snd_ps3uframdr10a42>10aAUDIO_A6ee" name=6code=avs" eucass="ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na=2" id=5L442"54                   10a9s="sref10aavsetting_info" class="10aav>10ad_ps3_avsetti hreng_info6ena>
 101ss="sref10_to_" idref="sound/ppc/s10_to>10_t="sref"KICK_STATUS_Mgotoc       6id="L477lean64"> 36="+code=P63AV_lean64"> io_6ute, );
10_> 465                 ,ZEame="L422]4de=PS3_=10a>,>10_2 465    ="sref">avsahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na="L462" class="line"privn cldatapr_deb6g" cl69ehrivn cldatasnd_ps3ass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " naute, 10_#llx>
53=a.e"cpKICK_STATUS_MASKne"cpKund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na="L462" class="line"" clICK_STATUS_MASK" clsnd_,< href="+coo6dne" name="L324SPDIF 10ame>10_lass="comment">/* wait6ref="soun6/pp10_5s="sref10stopped */
10_        < href="+coo6dpc/snd_p63.cset pcm ops *62"> 362* report
curr6210_L454"> 454        struct.nnd_cm6codeopspr_deb6g" cl69e=avs"cm6codeopsund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na/ >        struct="sRVudel_STREAM_PLAYBAC3" cRESET" class="sRVudel_STREAM_PLAYBAC3_AUDd* report
curr62sref""10" n>10_s="sref"KICK_STATUS_MASKDIO_eass="line" name="L32snnd_ps3pcm6cpdif_opspr_deb6g" cl69e=avs"ps3pcm6cpdif_ops_AUD2" id=5L442"54                   10_8s="sref10ef="sound/ppc="L462" cla10ef=>10_ps3_avsetting_info6ppc/snd_p63.c10_9s="sref10sound/ppc/sdma_< idr62">10sou>10_d_ps3_avsetting_info6enaahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na="L462" class="line"ode=_flagspr_deb6g" cl69eode=_flagssnd_ps3.c#L468" id="L4="sRVudel_INFO_NONINTERLEAVED_forT_RESs67="+="sRVudel_INFO_NONINTERLEAVED" naute, 10ef/a>        < href="+coo6dpc/snd_p63.cpre-alloc PCM4DMA buffer*62"> 362* report
curr6210e_A6"comment"62" class="line">
 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na/* report
curr6210eaudio_rate" cla_th" ccccccccccccccccccccccccc.c#L468" id="L4="sRVupMA_TYPE_DEV_forT_RESs67="+="sRVupMA_TYPE_DEV" na/* report
curr6210eppc/sound/ppcirogr 45"ma>        strucSKDIO_eass="line" name="L322"vpr_deb6g" cl69e2"v" na="L462" class="line"co ctua6="+code=PS3co c" na/* report
curr6210e hass="sref">="L4ss="sEL4s="l    cccccccccccc.c#L468" id="L4="sound/del_PREALLOC_SIZE36="+code=P63AV="sound/del_PREALLOC_SIZE" na/* report
curr6210ed/ppc/sound/ppckick5"""""""""""  cccccccccccc.c#L468" id="L4="sound/del_PREALLOC_SIZE36="+code=P63AV="sound/del_PREALLOC_SIZE" na2" id=5L442"54                   1026s="sref10ef="sound/ppc/s"ma_last_10ef=>10ess="line" nam hreng_info6ena>
10es="sref"KICK_STATUS_M2" class="line"prcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4prealloc failed>
 321        if (!format<=363.c#L441"6id="L441" class="lin10e8s="sref10 4_vaddref="sound/ppc/s"10 4_>10eAUDIO_A6ee" name=6codgotoc       6id="L477lean64"> 36="+code=P63AV_lean64"> io_6ute,  103ss="sref10_addref="sound/ppc/s"ma_10_ad>10_as3_avsetting_info6ppc/snd_p63.c1031s="sref10uct  362* report
curr62 / 2s10/pp>10_audio6ate a69     e" name="LLLLLLLLL* allocn c null buffer2"> 362* report
curr62 362* report
curr62 4>10_4udio6ate a69     e" name="LLLLLLLLL*  AGE_SIZE is enogh2"> 362* report
curr6210_5udio6ate a69     e" name="LLLLLLLLL*62"> 362* report
curr62 454        structahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU6vr actua6="+code=PS3null_bufferlS3_AU6vr acsnd_ps* report
curr6210_s="sref"KICK_STATUS_M2" class="line"2ma+alloc_coheren 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"co ctua6="+code=PS3co c" na/* report
curr6210_AUDIO_A6ee" name=6code=avs" euc_STATUS_M2" class="line" AGE_SIZE36="+code=P63AV AGE_SIZE" na/* report
curr62s10ass>10_> 465                               ass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU62ma+a actua6="+code=PS3null_bufferlS3_AU62ma+a ac" na/* report
curr6210 cUDIO_A6ee" name=6code=avs" euc_STATUS_M2" class="line"GFP_KERNE 410har>10 1s="line" nam hre!2" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU6vr actua6="+code=PS3null_bufferlS3_AU6vr acsnd_=rate" classubs!span class="commen1042s="sref10b class="line" nmb9s10b c>10 audio_rate" cla_th" c2" class="line"prcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dL4nullbuffer alloc failed>
 321        if (!format<=363.c#L441"6id="L441" class="lin1043s="sref10"64d/ppc24" class="line"10"64>10 ppc/sound/ppcirogr 45.c#L468" id="L4>
, ="L4ss="gotoc       6id="L477lean6preallocn c36="+code=P63AV_lean6preallocn cio_6ute, 10 d/ppc/sound/pd="line" n6me="L67 name="L415"> 1046s="sref10"> */
 >10 L454"> 454        structpr_clbuas="sref">ps3av_pr_clbuaund/p24" class="line" name="L324"> 36dL4null vr ac="> 36pcdma="> 36#llx>
 321        if (!format));
10 s="sref"KICK_STATUS_MA2" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU6vr actua6="+code=PS3null_bufferlS3_AU6vr acsnd_/a>));
 46510 AUDIO_A6ee" name=6codeline" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU62ma+a actua6="+code=PS3null_bufferlS3_AU62ma+a ac" na=363.c#L441"6id="L441" class="lin1049s="sref104" id="L454" class="line104" >10 t;,  362* report
curr62ret6/a>;
 454        struct.nnd_ps3snis_avcodt nas="sref">ps3av_te"5" na69is_avcodt naund/pass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na=363.c#L441"6id="L441" class="lin1051s="sref10ref">__func__);
10s> 465                 /6
10sclass="sref"> href="+coo6dpc/snd_p63.c_REister thc 4">  *62"> 362* report
curr62PS3AV_CMD_AUDIOp10g t>10s#llx>
53=a.nnd4"> ccode2"vpr_deb6g" cl69e.nnd4"> ccode2"vund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUDdeass="line" name="L322"vpr_deb6g" cl69e2"v" na="L462" class="line"co ctua6="+code=PS3co c" na=363.c#L441"6id="L441" class="lin1054s="sref103_set_avset6ing 4103_s>10s hass="sref">="sref">avs>
 c_REisterpr_deb6g" cl69e.nnd4"> c_REisterund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD=363.c#L441"6id="L441" class="lin1055s="sref10 class="line" name="upda10 cl>10sd/ppc/sound/p hreng_info6ena>
 10s6s="sref10Uass="sref">="LU_for4 ST10Uas>10sclass="sref">PS3_AUDIgotoc       6id="L477lean62ma+mappr_deb6g" cl69e7lean62ma+mapio_6ute, 5" class="line" nam10N10s" n5me="L57    struct  36d4S3_AUed. S3_AU62"laK="> 36dms>
10s> 465                  36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD="L462" class="line"long" clICK_STATUS_MASKlong" clsnd_,<      36="+code=P63AVahe_4"> " na.2" class="line"S3_AU62"laKICK_STATUS_MASKS3_AU62"laKsnd_=363.c#L441"6id="L441" class="lin106ss="sref10);
po10);
>10); 465    >      0363.c#L441"6id="L441" class="lin1061s="sref10N5" class="line" nam10N10)> 465                 10)audio6      6id="L477lean62ma+mappr_deb6g" cl69e7lean62ma+mapio_6:                 10)#llx>
53=a2ma+free_coheren 36="+code=P63AVahe_4"> " na.2" class="line"pL462"vpr_deb6g" cl69ehre62"v" na="L462" class="line"co ctua6="+code=PS3co c" na/* report
curr6210) hass="sref">="L4ss="sEL4s="l   " class="line" AGE_SIZE36="+code=P63AV AGE_SIZE" na/* report
curr6210)d/ppc/sound/ppckick5"""""""""""2" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU6vr actua6="+code=PS3null_bufferlS3_AU6vr acsnd_/a>));
PS3_AUDI   sound/pline" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU62ma+a actua6="+code=PS3null_bufferlS3_AU62ma+a ac" na=363.c#L441"6id="L441" class="lin1067s="sref10 415 """"""    struc10 41>10)7udio6      6id="L477lean6preallocn c36="+code=P63AV_lean6preallocn cio_6:                 avs.>10)d_ps3_avsetting_info53=a=avs"cm6lib_preallocn clfree_forlallpr_deb6g" cl69e=avs"cm6lib_preallocn clfree_forlallund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"pcmpr_deb6g" cl69ehcm" na=363.c#L441"6id="L441" class="lin1069s="sref10a>{
i          --{>10)9udio6      6id="L477lean64"> 36="+code=P63AV_lean64"> io_6:                 103.llx>
53=a.nnd4"> cfreepr_deb6g" cl69e.nnd4"> cfreeund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD=363.c#L441"6id="L441" class="lin1071s="sref10a>) {
)>1031udio6      6id="L477lean6irqpr_deb6g" cl69e7leanlirqio_6:                 P10 T_>1032 465    ="sref">avs.nnd_ps3free_irqpr_deb6g" cl69e=avs" clfree_irqund/p=363.c#L441"6id="L441" class="lin1073s="sref10avs_audio_rate" class="s10avs>1033udio6      6id="L477lean62ma+_REionpr_deb6g" cl69e7lean62ma+_REionetri:                  471  AUDI10me=>103 hass="sref">="sref">avsp cl2ma+_REion_freepr_deb6g" cl69ep cl2ma+_REion_freeund/ppc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" na=363.c#L441"6id="L441" class="lin1035s="sref10N5" class="line" nam10N1035udio6      6id="L477lean6mmi=pr_deb6g" cl69e7lean6mmi=mat<:                  454        struct.nnd_ps3unmap_mmi=pr_deb6g" cl69e=avs" clunmap_mmi=und/p=363.c#L441"6id="L441" class="lin1077s="sref10""""_ps3.c#L462" idrd1037udio6      6id="L477lean62"vlmappr_deb6g" cl69e7lean62"vlmapetri:                 5" class="line" nam10N1039udio6      6id="L477lean6open08       _p7lean6openetri:                 _"ma_""oL454" clas10it<>10ithass="sref">="sref">avsp clclose_hv6clasccpr_deb6g" cl69ehre3close_hv6clasccund/ppc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na=363.c#L441"6id="L441" class="lin1081s="sref10 T_RESET" class="sref">P10 T_>10i1llx>
 362* report
curr62avs_audio_r10ef">10iaudio6ate a69     e" name="LLLLLLLLL* there is no dea hrefor f">ftioncto4pcm.2"> 362* report
curr6210i3udio6ate a69     e" name="LLLLLLLLL* midlayer autom373"ally > leascs if thc 4">  removed2"> 362* report
curr62 321 ss="s10me=>10i4udio6ate a69     e" name="LLLLLLLLL*62"> 362* report
curr62su10mut>10id/ppc/sound/p>      "> 36io_mute" 6lass="sref">ps3av_audio_6ute,  683 >10iL454"};a href="+coo6dpc/snd_p63.ccavs"ps3probeL*62"> 362* report
curr62);
10i" n5me="L57    struct  362* report
curr62 /ppe="L468"> 468<6r2"vpr_deb6g" cl69e2"v" na=="line" n6me="L67 name="L415"> 109ss="sref10a href="+code=ret" class10a h>10a " naate" classubs!span class="commen1091s="sref10nd6TE: calli6g this func10nd6>10a1s="line" nam lass="line"5Ts3_mulass="sref">ps3av_audio_6ute, }
avsprcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dLS3_AUc"sr"> 36d>
 321        if (!format("&#ssnd_ps3uframdr10>&q>10appc/sound/ppc hreng_info6ena2"vpr_deb6g" cl69e2"v" na="L462" class="line"match_ida>( */
 >10a hass="sref">="L4ss=">      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 10a5s="sref102"> 452static int >10as_addr/ppc[ps3.c#L352" id=SND_S3_=CH10a6s="sref104" id="L454" class="line104" >10aclass="sref"> href="+coo6dpc/snd_p63.2"> 362* report
curr6210a7udio6ate a69     e" name="LLLLLLLLL* ctl and preallocn c buffer will be free  in2"> 362* report
curr62 442"snd_ps3uframdr10442>10a8udio6ate a69     e" name="LLLLLLLLL* .nnd4"> cfreeun> 362* report
curr62 362* report
curr62="sref">avs>
 cfreepr_deb6g" cl69e.nnd4"> cfreeund/ppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"4"> 36="+code=P63AV_CMD_AUD=363.c#L441"6id="L441" class="lin11a1s="sref11ad6TE: calli6g this func11ad6>1101s="line" nam hre="sref">avs>
}
 36dL4ctl free_CMDr"> 36d>
 321        if (!formatavs>
110_p6#L381" id6"L381" class="line" nam1104s="sref11a> */
="sref">avs2ma+free_coheren* report
curr62 452static int >11ad/ppc/sound/ppckick5""""""""""" " class="line" AGE_SIZE36="+code=P63AV AGE_SIZE" na/* report
curr6211aclass="sref">PS3_AUDI   sound/p2" class="line"ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU6vr actua6="+code=PS3null_bufferlS3_AU6vr acsnd_/a>));
11as="sref"KICK_STATUS_MASKDIO_e""line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"null_bufferlS3_AU62ma+a actua6="+code=PS3null_bufferlS3_AU62ma+a ac" na=363.c#L441"6id="L441" class="lin11a8s="sref11a42"> 442"snd_ps3uframdr11a42>110ps3_avsetting_info6ppc/snd_p63.c11a9s="sref11aavsetting_info" class="11aav>110d_ps3_avsetting_info6enap cl2ma+_REion_freepr_deb6g" cl69ep cl2ma+_REion_freeund/ppc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na="L462" class="line"dT_REion08       _pdT_REion" na=363.c#L441"6id="L441" class="lin111ss="sref11_to_" idref="sound/ppc/s11_to>111as3_avsetting_info6ppc/snd_p63.c11_1s="sref11  struct );
111_A6"comment"62" class="line"nnnd_ps3free_irqpr_deb6g" cl69e=avs" clfree_irqund/p=363.c#L441"6id="L441" class="lin11_2s="sref11a>,ZEame="L422]4de=PS3_=11a>,>11_2 465    ="sref">avs.nnd_ps3unmap_mmi=pr_deb6g" cl69e=avs" clunmap_mmi=und/p=363.c#L441"6id="L441" class="lin11_3s="sref11c="L4s/*n class="comment11c=">111_p6#L381" id6"L381" class="line" nam1114s="sref11ame6"L41161name="L321"> 11ame>111 hass="sref">="sref">avslv1_gpu_clascclunmapICK_STATUS_MASKlv1_gpu_clascclunmapund/p2=363.c#L441"6id="L441" class="lin11_5s="sref11stopped */
11_        < "sref">avsp clclose_hv6clasccpr_deb6g" cl69ehre3close_hv6clasccund/ppc/snd_ps3.c#L42"vpr_deb6g" cl69e2"v" na=363.c#L441"6id="L441" class="lin11_6s="sref11         454        structprcode=pr_deb6g" cl69ehrcode=und/p24" class="line" name="L324"> 36dLend "sr"> 36d>
 321        if (!format(sref""11" n>11_s="sref"KICK_>      0363.c#L441"6id="L441" class="lin11_8s="sref11ef="sound/ppc="L462" cla11ef=>11_ps3_a}a href="+coo6dpc/snd_p63.ccavs"ps3removeL*62"> 362* report
curr6211sou>11_d_ps3* report
curr6211ef/a> "L373" a href="+c6se=avs" c6 _ps3system_3WM6criver08       _p_ps3system_3WM6criver="sre="sref">avs.nnd_ps33WM6crivercode=pr_deb6g" cl69e.nnd_ps33WM6crivercode=snd_ps3ate" classubs!span class="commen1121s="sref11ef="sound/ppc/s"ma_next_11ef=>11e_A6"comment"6.2" class="line"match_ida>());
11eaudio_rate" c.2" class="line"probepr_deb6g" cl69ehrobesnd_ps3.c#L468" id="L4=avs" cldriver_probepr_deb6g" cl69e=avs" cldriver_probemat));
11eppc/sound/ppc.2" class="line"removepr_deb6g" cl69eremoveund/ps3.c#L468" id="L4=avs" cldriver_removepr_deb6g" cl69e=avs" cldriver_removeund//a>));
11e hass="sref">.2" class="line"Shutdown08       _pShutdownund/ps3.c#L468" id="L4=avs" cldriver_removepr_deb6g" cl69e=avs" cldriver_removeund//a>));
11ed/ppc/sound/p.2" class="line"4o ctua6="+code=PS3co c" naps3ate" classubs!span class="commen1126s="sref11ef="sound/ppc/s"ma_last_11ef=>112class="sref">PS3_AUDI.2" class="line"n clICK_STATUS_MASK" clsnd_ps3.c#L468" id="L4="sound/pRIVER_NAME36="+code=P63AV="sound/pRIVER_NAMEund//a>));
11es="sref"KICK_STATUS_M.2" class="line"owner08       _pownersnd_ps3.c#L468" id="L4THIS_MODULE36="+code=P63AVTHIS_MODULE_AUD/a>));
11eAUDIO_A6ee" n}/a>));
11_as3_avsetting_info6ppc/snd_p63.c1131s="sref11uct  / 2s11/pp>11_audio6ate a69     e" name="3.2"> 362* report
curr62 4>11_4udio6ate a69     e" name="L*62"> 362* report
curr6211_5udio"L373" class="line"5Ts3_mu__sniss="sref">ps3av___snisund/a>        struct.nnd_ps3snispr_deb6g" cl69e=avs" clsnisund/pvoid=63.c#L441"6id="L441" class="lin1136s="sref11LSB11_L454"ate" classubs!span class="commen1137s="sref11ppc6snd_p63ne" nef""11ppc>11_s="sref"KICK_ lass="line"5Ts3_mulass="sref">ps3av_audio_6ute, s11ass>113d_ps3_avsetti hre!2" class="line"firmware_has_fea   lICK_STATUS_MASKfirmware_has_fea   lund/ppc/snd_ps3.c#L4FW_FEATUREound/LV1tua6="+code=PS3FW_FEATUREound/LV1trin==63.c#L441"6id="L441" class="lin114ss="sref11 class="line"6name=6L43811 cl>11 cUDIO_A6ee" name=6cod>      -2" class="line"ENXIO08       _pENXIOetris="line" n6me="L67 name="L415"> 1141s="sref11hardwar6" name="L639"> 411har>114> 465                 s11b c>1142 465    ="sref">avsmemsass="sref">ps3av_memsasund/pass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na/ 0/ s3_cofppc/snd_ps3.c#L4ahe_4"> 36="+code=P63AVahe_4"> " na=2" id=5L442"54                   1143s="sref11"64d/ppc24" class="line"11"64>114#llx>
53=a.pin_lock3snispr_deb6g" cl69e=pin_lock3snisund/pass="line" name="L32ahe_4"> 36="+code=P63AVahe_4"> " na.2" class="line"2ma+locka href="sound/p2ma+locktrin=363.c#L441"6id="L441" class="lin1144s="sref114am" class="sr_debug<   114am>114lass="comment">/* wait6ref="soun6/pp1145s="sref11#L442" id=6L442"64ass="s11#L4>11 d/ppc/sound/p href="+coo6dpc/snd_p63.c_REister nystem3WM pRIVER, this calls our probe() f">fL*62"> 362* report
curr62 */
 >11 L454"> 454        struct>
114" n5me="L57    struct  46511 AUDIO_A6ee" n>      "> 36io_mute" 6lass="sref">ps3av_audio_6ute, 11 t; 115ss="sref11sref">ret6/a>;
avsmodule3snispr_deb6g" cl69emodule3snisund/ppc/snd_ps3.c#L4.nnd_ps3snispr_deb6g" cl69e=avs" clsnisund/=363.c#L441"6id="L441" class="lin1151s="sref11ref">__func__);
11s> 465                 /6
11sclass"L373" voidss="line"5Ts3_mu__exiss="sref">ps3av___exisund/a>        struct.nnd_ps3exiss="sref">ps3av_.nnd_ps3exisund/pvoid=63.c#L441"6id="L441" class="lin1153s="sref11g t65f">PS3AV_CMD_AUDIOp11g t>11s#llx>ate" classubs!span class="commen1154s="sref113_set_avset6ing 4113_s>11s hass="sref">="sref">avsp clsystem_3WM6crivercun_REisterpr_deb6g" cl69ep clsystem_3WM6crivercun_REisterund/pass="line" name="L32.nnd_ps33WM6crivercode=pr_deb6g" cl69e.nnd_ps33WM6crivercode=snd_=363.c#L441"6id="L441" class="lin1155s="sref11 class="line" name="upda11 cl>11sd/ppcd="line" n6me="L67 name="L415"> 1156s="sref11Uass="sref">="LU_for4 ST11Uas>11sclass="sref">avsmodule3exiss="sref">ps3av_module3exisund/ppc/snd_ps3.c#L4.nnd_ps3exiss="sref">ps3av_.nnd_ps3exisund/=363.c#L441"6id="L441" class="lin1157s="sref11N5" class="line" nam11N11s" n5me="L57    struct po11);
>116r454"="sref">avsMODULE_AUTHOR36="+code=P63AVMODULE_AUTHORund/p24" class="line" name="L324Sony Computer Entertainsnd_ Inc.1161udio6      6id="L47MODULE_ALIAS36="+code=P63AVMODULE_ALIASund/ppc/snd_ps3.c#L4 idrMODULE_ALIAS_SOUND_forT_RESs67="+ idrMODULE_ALIAS_SOUNDund/=363.c#L441"6id="L441" class="lin1162s="sref11sound/ppc/s"ma_lock_forT11sou>11)audio6/pre>
The original LXR 54ftware by thc 3.c#L441"http://6idrceforge.net/projects/lxrp>LXR pc/sunisy" na/ this experisnd_al versioncby 3.c#L441"mailto:lxr@"maux.no">lxr@"maux.no" na. lxr."maux.no kindly hostedcby 3.c#L441"http://www.redpill-"mapro.no">Redpill Lmapro ASund/, provider of Lmaux 4onsult na and operations serasccs sincc 1995.