taglinefilesource code
cd138drivers/block/cm206.c#define stats(i) ++cd->stats[st_ ## i]; \
cd139drivers/block/cm206.ccd->last_stat[st_ ## i] = cd->stat_counter++;
cd188drivers/block/cm206.c#define DISC_STATUS cd->disc_status[0]
cd189drivers/block/cm206.c#define FIRST_TRACK cd->disc_status[1]
cd190drivers/block/cm206.c#define LAST_TRACK cd->disc_status[2]
cd191drivers/block/cm206.c#define PAUSED cd->audio_status[0] /* misuse this memory byte! */
cd192drivers/block/cm206.c#define PLAY_TO cd->toc[0]  /* toc[0] records end-time in play */
cd194drivers/block/cm206.cstatic struct cm206_struct * cd;
cd236drivers/block/cm206.ccd->intr_ds = inw(r_data_status); /* resets data_ready, data_error,
cd239drivers/block/cm206.ccd->intr_ls = inw(r_line_status); /* resets overrun bit */
cd241drivers/block/cm206.cif (cd->intr_ls & ls_receive_buffer_full) {  
cd242drivers/block/cm206.ccd->intr_ur = inb(r_uart_receive); /* get order right! */
cd243drivers/block/cm206.ccd->intr_ls = inw(r_line_status); /* resets rbf interrupt */
cd244drivers/block/cm206.cif (!cd->background && cd->uart) wake_up_interruptible(&cd->uart);
cd247drivers/block/cm206.celse if (cd->intr_ds & ds_data_ready) { 
cd248drivers/block/cm206.cif (cd->background) ++cd->adapter_last;
cd249drivers/block/cm206.cif ((cd->wait_back || !cd->background) && cd->data) 
cd250drivers/block/cm206.cwake_up_interruptible(&cd->data);
cd254drivers/block/cm206.celse if (cd->command && cd->intr_ls & ls_transmitter_buffer_empty) {
cd256drivers/block/cm206.coutw(cd->command, r_uart_transmit);
cd257drivers/block/cm206.ccd->command=0;
cd258drivers/block/cm206.cif (!cd->background) wake_up_interruptible(&cd->uart);
cd261drivers/block/cm206.celse if (cd->intr_ds & ds_fifo_overflow) {
cd262drivers/block/cm206.cdebug(("Fifo overflow at sectors 0x%x\n", cd->sector_first));
cd264drivers/block/cm206.ccd->fifo_overflowed=1;  /* signal one word less should be read */
cd267drivers/block/cm206.celse if (cd->intr_ds & ds_data_error) {
cd268drivers/block/cm206.cdebug(("Data error at sector 0x%x\n", cd->sector_first));
cd271drivers/block/cm206.celse if (cd->intr_ds & ds_crc_error) {
cd272drivers/block/cm206.cdebug(("CRC error at sector 0x%x\n", cd->sector_first));
cd275drivers/block/cm206.celse if (cd->intr_ds & ds_sync_error) {
cd276drivers/block/cm206.cdebug(("Sync at sector 0x%x\n", cd->sector_first));
cd279drivers/block/cm206.celse if (cd->intr_ds & ds_toc_ready) {
cd287drivers/block/cm206.cif (cd->background && (cd->adapter_last-cd->adapter_first == cd->max_sectors
cd288drivers/block/cm206.c|| cd->fifo_overflowed))
cd296drivers/block/cm206.ccd->timed_out = 1;
cd304drivers/block/cm206.ccd->timer.data=(unsigned long) wait;
cd305drivers/block/cm206.ccd->timer.expires = jiffies + timeout;
cd306drivers/block/cm206.cadd_timer(&cd->timer);
cd308drivers/block/cm206.cdel_timer(&cd->timer);
cd309drivers/block/cm206.cif (cd->timed_out) {
cd310drivers/block/cm206.ccd->timed_out = 0;
cd325drivers/block/cm206.ccd->command = command;
cd330drivers/block/cm206.cif (sleep_or_timeout(&cd->uart, UART_TIMEOUT)) {
cd342drivers/block/cm206.csleep_or_timeout(&cd->uart, UART_TIMEOUT)) {
cd347drivers/block/cm206.creturn cd->intr_ur;
cd359drivers/block/cm206.csleep_or_timeout(&cd->uart, DSB_TIMEOUT)) {
cd364drivers/block/cm206.creturn cd->intr_ur;
cd376drivers/block/cm206.ccd->dsb = wait_dsb();  /* wait for command to finish */
cd450drivers/block/cm206.cif (cd->background) return -1; /* can't do twice */
cd453drivers/block/cm206.ccd->adapter_first = cd->adapter_last = start; 
cd454drivers/block/cm206.ccd->background = 1;    /* flag a read is going on */
cd460drivers/block/cm206.cif (cd->background) {
cd461drivers/block/cm206.ccd->background=0;
cd462drivers/block/cm206.ccd->adapter_last = -1;  /* invalidate adapter memory */
cd465drivers/block/cm206.ccd->fifo_overflowed=0;
cd468drivers/block/cm206.cif (sleep_or_timeout(&cd->data, DATA_TIMEOUT)) {
cd474drivers/block/cm206.cinsw(r_fifo_output_buffer, cd->sector, READ_AHEAD*RAW_SECTOR_SIZE/2);
cd476drivers/block/cm206.ccd->sector_first = start; cd->sector_last = start+READ_AHEAD;
cd493drivers/block/cm206.cdebug(("bh: %d\n", cd->background));
cd494drivers/block/cm206.cswitch (cd->background) {
cd497drivers/block/cm206.cif (!(cd->intr_ls & ls_transmitter_buffer_empty)) {
cd498drivers/block/cm206.ccd->command = c_stop;
cd501drivers/block/cm206.ccd->background=2;
cd508drivers/block/cm206.ccd->background=3;
cd511drivers/block/cm206.cif (cd->intr_ur != c_stop) {
cd512drivers/block/cm206.cdebug(("cm206_bh: c_stop echoed 0x%x\n", cd->intr_ur));
cd515drivers/block/cm206.ccd->background++;
cd518drivers/block/cm206.cif (cd->intr_ur != 0xff) {
cd519drivers/block/cm206.cdebug(("cm206_bh: c_stop reacted with 0x%x\n", cd->intr_ur));
cd522drivers/block/cm206.ccd->background=0;
cd530drivers/block/cm206.ccd->dsb=status[0];
cd531drivers/block/cm206.ccd->cc=status[1];
cd536drivers/block/cm206.cif (type_1_command(c_disc_status, 7, cd->disc_status)) {
cd543drivers/block/cm206.cif (!cd->openfiles) {
cd544drivers/block/cm206.ccd->background=0;
cd546drivers/block/cm206.ccd->adapter_last = -1;  /* invalidate adapter memory */
cd547drivers/block/cm206.ccd->sector_last = -1;
cd549drivers/block/cm206.cif (cd->dsb & dsb_tray_not_closed) {
cd552drivers/block/cm206.cwhile (i++<10 && cd->dsb & dsb_drive_not_ready) {
cd557drivers/block/cm206.cif (cd->dsb & (dsb_not_useful)) return -EIO;
cd558drivers/block/cm206.cif (!(cd->dsb & dsb_disc_present)) return -ENODATA;
cd559drivers/block/cm206.cif (cd->dsb & dsb_possible_media_change) {
cd560drivers/block/cm206.cmemset(cd->toc, 0, sizeof(cd->toc));
cd561drivers/block/cm206.cmemset(cd->audio_status, 0, sizeof(cd->audio_status));
cd565drivers/block/cm206.cif (!(cd->dsb & dsb_tray_locked)) {
cd573drivers/block/cm206.c++cd->openfiles; MOD_INC_USE_COUNT;
cd580drivers/block/cm206.cif (cd->openfiles==1) {
cd581drivers/block/cm206.cif (cd->background) {
cd582drivers/block/cm206.ccd->background=0;
cd586drivers/block/cm206.ccd->sector_last = -1;  /* Make our internal buffer invalid */
cd591drivers/block/cm206.c--cd->openfiles; MOD_DEC_USE_COUNT;
cd599drivers/block/cm206.cinsw(r_fifo_output_buffer, cd->sector + cd->fifo_overflowed, 
cd600drivers/block/cm206.cRAW_SECTOR_SIZE/2 - cd->fifo_overflowed);
cd602drivers/block/cm206.c++cd->adapter_first;  /* update the current adapter sector */
cd603drivers/block/cm206.ccd->fifo_overflowed=0;  /* reset overflow bit */
cd606drivers/block/cm206.ccd->sector_first=cd->adapter_first-1;
cd607drivers/block/cm206.ccd->sector_last=cd->adapter_first; /* update the buffer sector */
cd615drivers/block/cm206.cif (cd->adapter_first <= sector && sector < cd->adapter_last) { 
cd617drivers/block/cm206.cempty_buffer(sector - cd->adapter_first);
cd620drivers/block/cm206.celse if (cd->background==1 && cd->adapter_first <= sector
cd621drivers/block/cm206.c&& sector < cd->adapter_first+cd->max_sectors) {
cd623drivers/block/cm206.ccd->wait_back=1;
cd624drivers/block/cm206.cwhile (sector >= cd->adapter_last) {
cd625drivers/block/cm206.cif (sleep_or_timeout(&cd->data, DATA_TIMEOUT)) {
cd627drivers/block/cm206.ccd->adapter_last, cd->adapter_first, cd->background));
cd629drivers/block/cm206.ccd->wait_back=0;
cd633drivers/block/cm206.ccd->wait_back=0;
cd634drivers/block/cm206.cempty_buffer(sector - cd->adapter_first);
cd663drivers/block/cm206.cif (cd->sector_first <= cd_sec_no && cd_sec_no < cd->sector_last) {
cd664drivers/block/cm206.csource = ((uch *) cd->sector) + 16 + 
cd665drivers/block/cm206.cquarter*512 + (cd_sec_no-cd->sector_first)*RAW_SECTOR_SIZE;
cd669drivers/block/cm206.csource =  ((uch *) cd->sector)+16+quarter*512;
cd686drivers/block/cm206.cmssp->addr.lba = fsm2lba(&cd->disc_status[3]);
cd688drivers/block/cm206.cmssp->addr.msf.frame = cd->disc_status[3];
cd689drivers/block/cm206.cmssp->addr.msf.second = cd->disc_status[4];
cd690drivers/block/cm206.cmssp->addr.msf.minute = cd->disc_status[5];
cd722drivers/block/cm206.ccd->dsb = wait_dsb();
cd744drivers/block/cm206.cuch * q = cd->q;
cd749drivers/block/cm206.cfor (i=track; i>0; i--) if (cd->toc[i].track) {
cd750drivers/block/cm206.cmin = fsm2lba(cd->toc[i].fsm);
cd758drivers/block/cm206.cif (!cd->toc[ct].track) {
cd761drivers/block/cm206.ccd->toc[ct].track=q[1];  /* lead out still 0xaa */
cd762drivers/block/cm206.cfsm(l, cd->toc[ct].fsm);
cd763drivers/block/cm206.ccd->toc[ct].q0 = q[0];  /* contains adr and ctrl info */
cd790drivers/block/cm206.cif (!cd->toc[track].track) get_toc_lba(track);
cd800drivers/block/cm206.ccd->toc[1].track=1;    /* fill in first track position */
cd801drivers/block/cm206.cfor (i=0; i<3; i++) cd->toc[1].fsm[i] = cd->disc_status[3+i];
cd818drivers/block/cm206.ccd->dsb = wait_dsb();
cd828drivers/block/cm206.cplay_command[i+1] = cd->audio_status[i+2];
cd834drivers/block/cm206.cplay_command[i+1] = cd->toc[from].fsm[i];
cd835drivers/block/cm206.cPLAY_TO.fsm[i] = play_command[i+4] = cd->toc[to+1].fsm[i];
cd841drivers/block/cm206.ccd->dsb = wait_dsb();
cd847drivers/block/cm206.cuch * q = cd->q;
cd865drivers/block/cm206.cif (cd->dsb & dsb_play_in_progress) 
cd878drivers/block/cm206.cep->cdte_addr.msf.frame = cd->toc[track].fsm[0];
cd879drivers/block/cm206.cep->cdte_addr.msf.second = cd->toc[track].fsm[1];
cd880drivers/block/cm206.cep->cdte_addr.msf.minute = cd->toc[track].fsm[2];
cd882drivers/block/cm206.celse ep->cdte_addr.lba = fsm2lba(cd->toc[track].fsm);
cd883drivers/block/cm206.cep->cdte_adr = cd->toc[track].q0 & 0xf; 
cd884drivers/block/cm206.cep->cdte_ctrl = cd->toc[track].q0 >> 4;
cd900drivers/block/cm206.celse return cd->stats[arg];
cd903drivers/block/cm206.celse return cd->last_stat[arg];
cd926drivers/block/cm206.ccd->sector_last = -1;  /* flag no data buffered */
cd927drivers/block/cm206.ccd->adapter_last = -1;    
cd932drivers/block/cm206.cif (cd->dsb & (dsb_drive_not_ready | dsb_tray_not_closed) )
cd981drivers/block/cm206.cif (cd->dsb & dsb_play_in_progress) return type_0_command(c_stop, 1);
cd984drivers/block/cm206.cif (cd->dsb & dsb_play_in_progress) {
cd986drivers/block/cm206.ctype_1_command(c_audio_status, 5, cd->audio_status);
cd996drivers/block/cm206.cif (cd->openfiles == 1) {  /* Must do an open before an eject! */
cd998drivers/block/cm206.cmemset(cd->toc, 0, sizeof(cd->toc));
cd999drivers/block/cm206.cmemset(cd->disc_status, 0, sizeof(cd->disc_status));
cd1067drivers/block/cm206.ckfree(cd);
cd1178drivers/block/cm206.ccd = (struct cm206_struct *) kmalloc(size, GFP_KERNEL);
cd1179drivers/block/cm206.cif (!cd) return ERROR;
cd1181drivers/block/cm206.ccd = (struct cm206_struct *) mem_start;
cd1226drivers/block/cm206.cmemset(cd, 0, sizeof(*cd));  /* give'm some reasonable value */
cd1227drivers/block/cm206.ccd->sector_last = -1;    /* flag no data buffered */
cd1228drivers/block/cm206.ccd->adapter_last = -1;
cd1229drivers/block/cm206.ccd->timer.function = cm206_timeout;
cd1230drivers/block/cm206.ccd->max_sectors = (inw(r_data_status) & ds_ram_size) ? 24 : 97;
cd1232drivers/block/cm206.c" %ld bytes kernel memory used.\n", cd->max_sectors*2, size);