Commit 17701d14 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

Staging: d53155_drv.c: cleanup fbuffer usage



The global symbol dt3155_fbuffer[], declared in dt3155_isr.c, is really
just a pointer to dt3155_status[].fbuffer. To improve readability, make
some of the really long lines shorter, and make the buffer access more
consistent, use &dt3155_status[].fbuffer to access the buffer structure.

Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Scott Smedley <ss@aao.gov.au>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 9f79211c
Loading
Loading
Loading
Loading
+40 −45
Original line number Diff line number Diff line
@@ -135,6 +135,8 @@ u32 unique_tag = 0;;
 */
static void quick_stop (int minor)
{
  struct dt3155_fbuffer *fb = &dt3155_status[minor].fbuffer;

  // TODO: scott was here
#if 1
  int_csr_r.reg = readl(dt3155_lbase[minor] + INT_CSR);
@@ -146,11 +148,11 @@ static void quick_stop (int minor)
  dt3155_status[minor].state &= ~(DT3155_STATE_STOP|0xff);
  /* mark the system stopped: */
  dt3155_status[minor].state |= DT3155_STATE_IDLE;
  dt3155_fbuffer[minor]->stop_acquire = 0;
  dt3155_fbuffer[minor]->even_stopped = 0;
  fb->stop_acquire = 0;
  fb->even_stopped = 0;
#else
  dt3155_status[minor].state |= DT3155_STATE_STOP;
  dt3155_status[minor].fbuffer.stop_acquire = 1;
  fb->stop_acquire = 1;
#endif

}
@@ -170,6 +172,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
  unsigned long flags;
  u32 buffer_addr;
  void __iomem *mmio;
  struct dt3155_fbuffer *fb;

  /* find out who issued the interrupt */
  for (index = 0; index < ndevices; index++) {
@@ -187,6 +190,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
  }

  mmio = dt3155_lbase[minor];
  fb = &dt3155_status[minor].fbuffer;

  /* Check for corruption and set a flag if so */
  csr1_r.reg = readl(mmio + CSR1);
@@ -209,7 +213,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
      if ((dt3155_status[minor].state & DT3155_STATE_MODE) ==
	   DT3155_STATE_FLD)
	{
	  dt3155_fbuffer[minor]->frame_count++;
	  fb->frame_count++;
	}

      ReadI2C(mmio, EVEN_CSR, &i2c_even_csr.reg);
@@ -218,10 +222,10 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
      int_csr_r.fld.FLD_END_EVE = 1;

      /* disable the interrupt if last field */
      if (dt3155_fbuffer[minor]->stop_acquire)
      if (fb->stop_acquire)
	{
	  printk("dt3155:  even stopped.\n");
	  dt3155_fbuffer[minor]->even_stopped = 1;
	  fb->even_stopped = 1;
	  if (i2c_even_csr.fld.SNGL_EVE)
	    {
	      int_csr_r.fld.FLD_END_EVE_EN = 0;
@@ -241,9 +245,8 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
	  /* GCS (Aug 2, 2002) -- In field mode, dma the odd field
	     into the lower half of the buffer */
	  const u32 stride =  dt3155_status[minor].config.cols;
	  buffer_addr = dt3155_fbuffer[minor]->
	    frame_info[dt3155_fbuffer[minor]->active_buf].addr
	    + (DT3155_MAX_ROWS / 2) * stride;
	  buffer_addr = fb->frame_info[fb->active_buf].addr +
			(DT3155_MAX_ROWS / 2) * stride;
	  local_save_flags(flags);
	  local_irq_disable();
	  wake_up_interruptible(&dt3155_read_wait_queue[minor]);
@@ -262,13 +265,11 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)

      /* Note that we actually saw an even field meaning  */
      /* that subsequent odd field complete the frame     */
      dt3155_fbuffer[minor]->even_happened = 1;
      fb->even_happened = 1;

      /* recording the time that the even field finished, this should be */
      /* about time in the middle of the frame */
      do_gettimeofday(&(dt3155_fbuffer[minor]->
			 frame_info[dt3155_fbuffer[minor]->
				     active_buf].time));
      do_gettimeofday(&fb->frame_info[fb->active_buf].time);
      return;
    }

@@ -280,15 +281,14 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
      /* Clear the interrupt? */
      int_csr_r.fld.FLD_END_ODD = 1;

      if (dt3155_fbuffer[minor]->even_happened ||
      if (fb->even_happened ||
	  (dt3155_status[minor].state & DT3155_STATE_MODE) ==
	  DT3155_STATE_FLD)
	{
	  dt3155_fbuffer[minor]->frame_count++;
	  fb->frame_count++;
	}

      if (dt3155_fbuffer[minor]->stop_acquire &&
	   dt3155_fbuffer[minor]->even_stopped)
      if (fb->stop_acquire && fb->even_stopped)
	{
	  printk(KERN_DEBUG "dt3155:  stopping odd..\n");
	  if (i2c_odd_csr.fld.SNGL_ODD)
@@ -299,8 +299,8 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)

	      /* mark the system stopped: */
	      dt3155_status[minor].state |= DT3155_STATE_IDLE;
	      dt3155_fbuffer[minor]->stop_acquire = 0;
	      dt3155_fbuffer[minor]->even_stopped = 0;
	      fb->stop_acquire = 0;
	      fb->even_stopped = 0;

	      printk(KERN_DEBUG "dt3155:  state is now %x\n",
		     dt3155_status[minor].state);
@@ -316,7 +316,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
      /* if the odd field has been acquired, then     */
      /* change the next dma location for both fields */
      /* and wake up the process if sleeping          */
      if (dt3155_fbuffer[minor]->even_happened ||
      if (fb->even_happened ||
	   (dt3155_status[minor].state & DT3155_STATE_MODE) ==
	   DT3155_STATE_FLD)
	{
@@ -327,7 +327,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
#ifdef DEBUG_QUES_B
	  printques(minor);
#endif
	  if (dt3155_fbuffer[minor]->nbuffers > 2)
	  if (fb->nbuffers > 2)
	    {
	      if (!are_empty_buffers(minor))
		{
@@ -341,31 +341,26 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
	      /* The ready_que can't be full, since we know
	       * there is one active buffer right now, so it's safe
	       * to push the active buf on the ready_que. */
	      push_ready(minor, dt3155_fbuffer[minor]->active_buf);
	      push_ready(minor, fb->active_buf);
	      /* There's at least 1 empty -- make it active */
	      dt3155_fbuffer[minor]->active_buf = pop_empty(minor);
	      dt3155_fbuffer[minor]->
		frame_info[dt3155_fbuffer[minor]->
			    active_buf].tag = ++unique_tag;
	      fb->active_buf = pop_empty(minor);
	      fb->frame_info[fb->active_buf].tag = ++unique_tag;
	    }
	  else /* nbuffers == 2, special case */
	    { /* There is 1 active buffer.
	       * If there is a locked buffer, keep the active buffer
	       * the same -- that means we drop a frame.
	       */
	      if (dt3155_fbuffer[minor]->locked_buf < 0)
	      if (fb->locked_buf < 0)
		{
		  push_ready(minor,
			      dt3155_fbuffer[minor]->active_buf);
		  push_ready(minor, fb->active_buf);
		  if (are_empty_buffers(minor))
		    {
		      dt3155_fbuffer[minor]->active_buf =
			pop_empty(minor);
		      fb->active_buf = pop_empty(minor);
		    }
		  else
		    { /* no empty or locked buffers, so use a readybuf */
		      dt3155_fbuffer[minor]->active_buf =
			pop_ready(minor);
		      fb->active_buf = pop_ready(minor);
		    }
		}
	    }
@@ -374,7 +369,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)
	  printques(minor);
#endif

	  dt3155_fbuffer[minor]->even_happened = 0;
	  fb->even_happened = 0;

	  wake_up_interruptible(&dt3155_read_wait_queue[minor]);

@@ -383,8 +378,7 @@ static void dt3155_isr(int irq, void *dev_id, struct pt_regs *regs)


      /* Set up the DMA address for the next frame/field */
      buffer_addr = dt3155_fbuffer[minor]->
	frame_info[dt3155_fbuffer[minor]->active_buf].addr;
      buffer_addr = fb->frame_info[fb->active_buf].addr;
      if ((dt3155_status[minor].state & DT3155_STATE_MODE) ==
	   DT3155_STATE_FLD)
	{
@@ -421,13 +415,13 @@ static void dt3155_init_isr(int minor)
{
  const u32 stride =  dt3155_status[minor].config.cols;
  void __iomem *mmio = dt3155_lbase[minor];
  struct dt3155_fbuffer *fb = &dt3155_status[minor].fbuffer;

  switch (dt3155_status[minor].state & DT3155_STATE_MODE)
    {
    case DT3155_STATE_FLD:
      {
	even_dma_start_r  = dt3155_status[minor].
	  fbuffer.frame_info[dt3155_status[minor].fbuffer.active_buf].addr;
	even_dma_start_r  = fb->frame_info[fb->active_buf].addr;
	even_dma_stride_r = 0;
	odd_dma_stride_r  = 0;

@@ -440,8 +434,7 @@ static void dt3155_init_isr(int minor)
    case DT3155_STATE_FRAME:
    default:
      {
	even_dma_start_r  = dt3155_status[minor].
	  fbuffer.frame_info[dt3155_status[minor].fbuffer.active_buf].addr;
	even_dma_start_r  = fb->frame_info[fb->active_buf].addr;
	odd_dma_start_r   =  even_dma_start_r + stride;
	even_dma_stride_r =  stride;
	odd_dma_stride_r  =  stride;
@@ -514,6 +507,7 @@ static int dt3155_ioctl(struct inode *inode,
{
  int minor = MINOR(inode->i_rdev); /* What device are we ioctl()'ing? */
  void __user *up = (void __user *)arg;
  struct dt3155_fbuffer *fb = &dt3155_status[minor].fbuffer;

  if (minor >= MAXBOARDS || minor < 0)
    return -ENODEV;
@@ -572,7 +566,7 @@ static int dt3155_ioctl(struct inode *inode,
    case DT3155_STOP:
      {
	if (dt3155_status[minor].state & DT3155_STATE_STOP ||
	    dt3155_status[minor].fbuffer.stop_acquire)
	    fb->stop_acquire)
	  return -EBUSY;

	if (dt3155_status[minor].state == DT3155_STATE_IDLE)
@@ -589,8 +583,8 @@ static int dt3155_ioctl(struct inode *inode,
	if (dt3155_status[minor].state != DT3155_STATE_IDLE)
	  return -EBUSY;

	dt3155_status[minor].fbuffer.stop_acquire = 0;
	dt3155_status[minor].fbuffer.frame_count = 0;
	fb->stop_acquire = 0;
	fb->frame_count = 0;

	/* Set the MODE in the status -- we default to FRAME */
	if (dt3155_status[minor].config.acq_mode == DT3155_MODE_FIELD)
@@ -750,6 +744,7 @@ static ssize_t dt3155_read(struct file *filep, char __user *buf,
  int		minor = MINOR(filep->f_dentry->d_inode->i_rdev);
  u32		offset;
  int		frame_index;
  struct dt3155_fbuffer *fb = &dt3155_status[minor].fbuffer;
  struct frame_info	*frame_info;

  /* TODO: this should check the error flag and */
@@ -800,14 +795,14 @@ static ssize_t dt3155_read(struct file *filep, char __user *buf,
	}
    }

  frame_info = &dt3155_status[minor].fbuffer.frame_info[frame_index];
  frame_info = &fb->frame_info[frame_index];

  /* make this an offset */
  offset = frame_info->addr - dt3155_status[minor].mem_addr;

  put_user(offset, (unsigned int __user *)buf);
  buf += sizeof(u32);
  put_user(dt3155_status[minor].fbuffer.frame_count, (unsigned int __user *)buf);
  put_user(fb->frame_count, (unsigned int __user *)buf);
  buf += sizeof(u32);
  put_user(dt3155_status[minor].state, (unsigned int __user *)buf);
  buf += sizeof(u32);