コード例 #1
0
ファイル: kbd.c プロジェクト: kisom/pmon
int psaux_init(void)
{
	int retval;

	if (!detect_auxiliary_port())
		return -1;

	kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE); /* Enable Aux. */
	aux_write_ack(AUX_SET_SAMPLE);
	aux_write_ack(100);			/* 100 samples/sec */
	aux_write_ack(AUX_SET_RES);
	aux_write_ack(3);			/* 8 counts per mm */
	aux_write_ack(AUX_SET_SCALE21);		/* 2:1 scaling */
	kbd_write_command(KBD_CCMD_MOUSE_DISABLE); /* Disable aux device. */
	kbd_write_cmd(AUX_INTS_OFF); /* Disable controller ints. */

//---------------------------------------
	kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE);	/* Enable the
							   auxiliary port on
							   controller. */
	aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */
	kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */
	
	mdelay(2);			/* Ensure we follow the kbc access delay rules.. */

	send_data(KBD_CMD_ENABLE);	/* try to workaround toshiba4030cdt problem */
	return 0;
}
コード例 #2
0
static int __init psaux_init(void)
{
	int retval;

	if (!detect_auxiliary_port())
		return -EIO;

	if ((retval = misc_register(&psaux_mouse)))
		return retval;

	queue = (struct aux_queue *) kmalloc(sizeof(*queue), GFP_KERNEL);
	if (queue == NULL) {
		printk(KERN_ERR "psaux_init(): out of memory\n");
		misc_deregister(&psaux_mouse);
		return -ENOMEM;
	}
	memset(queue, 0, sizeof(*queue));
	queue->head = queue->tail = 0;
	init_waitqueue_head(&queue->proc_list);

#ifdef INITIALIZE_MOUSE
	kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE); /* Enable Aux. */
	aux_write_ack(AUX_SET_SAMPLE);
	aux_write_ack(100);			/* 100 samples/sec */
	aux_write_ack(AUX_SET_RES);
	aux_write_ack(3);			/* 8 counts per mm */
	aux_write_ack(AUX_SET_SCALE21);		/* 2:1 scaling */
#endif /* INITIALIZE_MOUSE */
	kbd_write_command(KBD_CCMD_MOUSE_DISABLE); /* Disable aux device. */
	kbd_write_cmd(AUX_INTS_OFF); /* Disable controller ints. */

	return 0;
}
コード例 #3
0
ファイル: ps2_mouse.c プロジェクト: aniwang2013/leon-rtems
static int release_aux(void)
{
  if (--aux_count)
    return 0;
  kbd_write_cmd(AUX_INTS_OFF);			    /* Disable controller ints */
  kbd_write_command_w(KBD_CCMD_MOUSE_DISABLE);
  BSP_remove_rtems_irq_handler( &ps2_isr_data );
  return 0;
}
コード例 #4
0
static int release_aux(struct inode * inode, struct file * file)
{
	lock_kernel();
	fasync_aux(-1, file, 0);
	if (--aux_count) {
		unlock_kernel();
		return 0;
	}
	kbd_write_cmd(AUX_INTS_OFF);			    /* Disable controller ints */
	kbd_write_command_w(KBD_CCMD_MOUSE_DISABLE);
	aux_free_irq(AUX_DEV);
	unlock_kernel();
	return 0;
}
コード例 #5
0
ファイル: ps2_mouse.c プロジェクト: aniwang2013/leon-rtems
static int open_aux(void)
{
  int status;

  if (aux_count++) {
    return 0;
  }
  queue->head = queue->tail = 0;		/* Flush input queue */

  status = BSP_install_rtems_irq_handler( &ps2_isr_data );
  if( !status ) {
    printk("Error installing ps2-mouse interrupt handler!\n" );
    rtems_fatal_error_occurred( status );
  }

  kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE); /* Enable the auxiliary port on
                                                 controller. */
  aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */
  kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */
  return 0;
}
コード例 #6
0
static int open_aux(struct inode * inode, struct file * file)
{
	if (aux_count++) {
		return 0;
	}
	queue->head = queue->tail = 0;		/* Flush input queue */
	if (aux_request_irq(keyboard_interrupt, AUX_DEV)) {
		aux_count--;
		return -EBUSY;
	}
	kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE);	/* Enable the
							   auxiliary port on
							   controller. */
	aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */
	kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */
	
	mdelay(2);			/* Ensure we follow the kbc access delay rules.. */

	send_data(KBD_CMD_ENABLE);	/* try to workaround toshiba4030cdt problem */

	return 0;
}
コード例 #7
0
ファイル: ps2_mouse.c プロジェクト: aniwang2013/leon-rtems
static int psaux_init( void )
{
  if( !detect_auxiliary_port() ) {
    printk( "PS/2 - mouse not found.\n" );
    return -EIO;
  }
  queue = (struct aux_queue *)malloc( sizeof(*queue) );
  memset(queue, 0, sizeof(*queue));
  queue->head = queue->tail = 0;
  queue->proc_list = NULL;

  #ifdef INITIALIZE_MOUSE
    kbd_write_command_w(KBD_CCMD_MOUSE_ENABLE); /* Enable Aux. */
    aux_write_ack(AUX_SET_SAMPLE);
    aux_write_ack(100);			      /* 100 samples/sec */
    aux_write_ack(AUX_SET_RES);
    aux_write_ack(3);			         /* 8 counts per mm */
    aux_write_ack(AUX_SET_SCALE21);	/* 2:1 scaling */
  #endif /* INITIALIZE_MOUSE */
  kbd_write_command(KBD_CCMD_MOUSE_DISABLE); /* Disable aux device. */
  kbd_write_cmd(AUX_INTS_OFF); /* Disable controller ints. */
  return 0;
}