Пример #1
0
int felica_uart_write(char *buf, size_t count)
{
    mm_segment_t old_fs = get_fs();
    int n;

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] write_hs_uart - start \n");
    #endif

    if (uart_f == NULL)
    {
        #ifdef FEATURE_DEBUG_HIGH
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened\n");
		#endif
        return 0;
    }

    set_fs(KERNEL_DS);
    n = vfs_write(uart_f, buf, count, &uart_f->f_pos);
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] write_hs_uart - write (%d)\n", n);
    #endif
    set_fs(old_fs);

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] write_hs_uart - end \n");
    #endif

    return n;
}
Пример #2
0
/*
* Description : 
* Input : 
* Output : 
*/
int felica_gpio_open(int gpionum, int direction, int value)
{
  int rc = 0;
  
  /* Cofigure GPIO */
  rc = gpio_tlmm_config(gpionum, GPIO_CONFIG_ENABLE);
  if(rc)
  {
    FELICA_DEBUG_MSG("[FELICA] ERROR - gpio_tlmm_config \n");
    return rc;
  }

  /* Set output direction */
  if(GPIO_DIRECTION_IN == direction)
  {
    rc = gpio_direction_input(gpionum);
    if(rc)
    {
      FELICA_DEBUG_MSG("[FELICA] ERROR -  gpio_direction_input \n");
      return rc;
    }  
  }
  else
  {
    rc = gpio_direction_output(gpionum, value);
    if(rc)
    {
      FELICA_DEBUG_MSG("[FELICA] ERROR -  gpio_direction_output \n");
      return rc;
    }
  }

  return rc;
}
Пример #3
0
/*
* Description : MFC calls this function using close method(void close()) of FileOutputStream class
*               When this fuction is excuted, set PON to Low.
* Input : None
* Output : Success : 0 Fail : Other
*/
static int felica_rws_release (struct inode *inode, struct file *fp)
{
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_release - start \n");
  #endif

  if(0 == isopen)
  {
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_release - not open \n");
    #endif

    return -1;
  }
  else
  {
    isopen = 0;

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_release - end \n");
    #endif
  }

#ifdef FELICA_FN_DEVICE_TEST
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_release - result(%d) \n",result_close_rws);
  return result_close_rws;
#else
    return 0;
#endif
}
Пример #4
0
/*
 * Description: MFC calls this function using close method(int close()) of FileInputStream class
 * Input: None
 * Output: RFS low : 1 RFS high : 0
 */
static int felica_rfs_release (struct inode *inode, struct file *fp)
{
  if(0 == isopen)
  {
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_release - not open \n");
    #endif

    return -1;
  }
  else
  {
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_release - start \n");
    #endif

    isopen = 0;
  }
#ifdef FELICA_LED_SUPPORT
 isFelicaUsed = 0;
#endif

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_release - end \n");
  #endif

#ifdef FELICA_FN_DEVICE_TEST
  FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_release - result(%d) \n",result_close_rfs);
  return result_close_rfs;
#else
  return 0;
#endif
}
Пример #5
0
static void felica_int_low_work(struct work_struct *data)
{
  int rc = 0;

  lock_felica_wake_lock();
  disable_irq_nosync(gpio_to_irq(GPIO_FELICA_INT));

  usermodehelper_enable();

  //#ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_int_low_work - start \n");
  //#endif

  rc = invoke_felica_apk();

  if(rc)
  {
    FELICA_DEBUG_MSG("[FELICA_RWS] Error - invoke app \n");
    unlock_felica_wake_lock();
  }

  //#ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_int_low_work - end \n");
  //#endif

  enable_irq(gpio_to_irq(GPIO_FELICA_INT));
}
/*
* Description : MFC calls this function using close method(void open()) of FileOutputStream class
*               When this fuction is excuted, set PON to Low.
* Input : None
* Output : Success : 0 Fail : Other
*/
static int felica_rws_open (struct inode *inode, struct file *fp)
{
  int rc = 0;

  if(1 == isopen)
  {
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_open - already open \n");
    #endif

    return -1;
  }
  else
  {
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_open - start \n");
    #endif

    isopen = 1;
  }

  rc = felica_gpio_open(GPIO_FELICA_INT, GPIO_DIRECTION_IN, GPIO_HIGH_VALUE);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_open - end \n");
  #endif

#ifdef FELICA_FN_DEVICE_TEST
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_open - result(%d) \n",result_open_rws);
  return result_open_rws;
#else
    return rc;
#endif
}
Пример #7
0
/*
* Description : get size of remaing data
* Input : none
* Output : success : data length fail : 0
*/
int felica_uart_ioctrl(int *count)
{
  mm_segment_t old_fs = get_fs();
  int rc = 0;

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] felica_uart_ioctrl - start \n");
  #endif

  if(0 > fd)
  {
    FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened\n");
    return rc;
  }

  set_fs(KERNEL_DS);
  
  rc = sys_ioctl(fd, TIOCINQ, (unsigned long)count);

  set_fs(old_fs);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] felica_uart_ioctrl - end \n");
  #endif

  return rc;
}
Пример #8
0
static void felica_rfs_interrupt_work(struct work_struct *data)
{
	int rc = 0;

	disable_irq_nosync(gpio_to_irq(felica_get_rfs_gpio_num()));
	usermodehelper_enable();

	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_interrupt_work - start \n");
	#endif

	rc = invoke_led_service();

	if(rc)
	{
      #ifdef FEATURE_DEBUG_HIGH
      FELICA_DEBUG_MSG("[FELICA_RFS] Error - invoke app \n");
	unlock_felica_rfs_wake_lock();
	isFelicaUsed =0;
	  #endif
	}
	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_interrupt_work - end \n");
	#endif

	enable_irq(gpio_to_irq(felica_get_rfs_gpio_num()));
}
Пример #9
0
int felica_uart_close(void)
{
    mm_segment_t old_fs = get_fs();

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] close_hs_uart - start \n");
    #endif

    if (uart_f == NULL)
    {
        #ifdef FEATURE_DEBUG_HIGH
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened \n");
		#endif
        return 0;
    }

    set_felica_uart_status(UART_STATUS_READY);

    set_fs(KERNEL_DS);
    filp_close(uart_f, NULL);
    uart_f = NULL;
    set_fs(old_fs);

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] close_hs_uart - end \n");
    #endif

    return 0;
}
Пример #10
0
int felica_uart_ioctrl(int *count)
{
    mm_segment_t old_fs = get_fs();
    int n;

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] felica_uart_ioctrl - start \n");
    #endif

    if (uart_f == NULL)
    {
        #ifdef FEATURE_DEBUG_HIGH
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened\n");
		#endif
        return 0;
    }

    set_fs(KERNEL_DS);
    n = do_vfs_ioctl(uart_f, -1, TIOCINQ, (unsigned long)count);
    #ifdef FEATURE_DEBUG_MED
    FELICA_DEBUG_MSG("[FELICA_UART] do_vfs_ioctl return(%d), count(%d) \n", n, *count);
    #endif
    set_fs(old_fs);

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] felica_uart_ioctrl - end \n");
    #endif

    return n;
}
Пример #11
0
/*
* Description : open uart
* Input : None
* Output : success : 0 fail : others
*/
int felica_uart_open(void)
{
//  struct termios newtio;
  int rc;
  mm_segment_t old_fs = get_fs();

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] open_hs_uart - start \n");
  #endif

  if(0 <= fd)
  {
    FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is already opened fd : %d\n",fd);
    return 0;
  }

  set_fs(KERNEL_DS);

    fd = sys_open("/dev/ttyO3", O_RDWR | O_NOCTTY | O_NONBLOCK, 0);
    
  FELICA_DEBUG_MSG("[FELICA_UART] open UART - fd : %d \n",fd);
    
    
    if (fd < 0)
    {
    FELICA_DEBUG_MSG("[FELICA_UART] ERROR - can not sys_open \n");
      set_fs(old_fs);
      return fd;
    }

    {
      /*  Set speed */
      struct termios newtio;

      // yjchoi; 120412 temporary block due to build error
      serial_omap_disable_console_port();
      
      // yjchoi; 120412 temporary block due to build error
      rc = felica_gpio_open(GPIO_FELICA_UART_SW, GPIO_DIRECTION_OUT, GPIO_LOW_VALUE);

      felica_gpio_write(GPIO_FELICA_UART_SW, 0);
      sys_ioctl(fd, TCGETS, (unsigned long)&newtio);
      memcpy(&console_settings, &newtio, sizeof(struct termios));

      memset(&newtio, 0, sizeof(newtio));
      newtio.c_cflag = B460800 | CS8 | CLOCAL | CREAD;
      newtio.c_cc[VMIN] = 1;
      newtio.c_cc[VTIME] = 5;
      sys_ioctl(fd, TCFLSH, TCIOFLUSH);
      sys_ioctl(fd, TCSETSF, (unsigned long)&newtio);
    }
    set_fs(old_fs);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] open_hs_uart - end \n");
  #endif

  return 0;
}
Пример #12
0
/*
* Description :
* Input :
* Output :
*/
static ssize_t felica_cal_read(struct file *fp, char *buf, size_t count, loff_t *pos)
{
    unsigned char read_buf = 0x00;
    int rc = -1;

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal_read - start \n");
#endif

    /* Check error */
    if(NULL == fp)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] ERROR fp \n");
        return -1;
    }

    if(NULL == buf)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] ERROR buf \n");
        return -1;
    }

    if(1 != count)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] ERROR count \n");
        return -1;
    }

    if(NULL == pos)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] ERROR file \n");
        return -1;
    }



    rc = felica_i2c_read(FELICA_I2C_REG_ADDRSS_01, &read_buf, 1);
    if(rc)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] felica_i2c_read : %d \n",rc);
        return -1;
    }

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal : 0x%02x \n",read_buf);
#endif

    rc = copy_to_user(buf, &read_buf, count);
    if(rc)
    {
        FELICA_DEBUG_MSG("[FELICA_CAL] ERROR - copy_from_user \n");
        return -1;
    }

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal_read - end \n");
#endif

    return 1;
}
Пример #13
0
static void felica_rfs_open_after_boot_work(struct work_struct *data)
{
	int rc = 0;
    #ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_open_after_boot_work - start");
    #endif
	rc = felica_gpio_open(felica_get_rfs_gpio_num(), GPIO_DIRECTION_IN, GPIO_HIGH_VALUE);
    #ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_open_after_boot_work - end");
    #endif
}
Пример #14
0
/*
* Description : close uart
* Input : None
* Output : success : 0
*/
int felica_uart_close(void)
{

  mm_segment_t old_fs = get_fs();

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] close_hs_uart - start \n");
  #endif

  if(0 > fd)
  {
    FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened\n");
    return 0;
  }

    set_fs(KERNEL_DS);
    {
      /*  Set speed */
      struct termios settings;
  
      sys_ioctl(fd, TCGETS, (unsigned long)&settings);
#if 1
      memcpy(&settings, &console_settings, sizeof(struct termios));
      FELICA_DEBUG_MSG("[FELICA_UART] Set BAUD rate to 115200\n");
#else
      if((settings.c_cflag & CBAUD) == B460800)
      {
        settings.c_cflag &= ~(CBAUD);
        settings.c_cflag |= B115200;
        FELICA_DEBUG_MSG("[FELICA_UART] Set BAUD rate to 115200\n");
      }
#endif
      sys_ioctl(fd, TCSETS, (unsigned long)&settings);
    }

  sys_close(fd);
  fd = -1;

  felica_gpio_write(GPIO_FELICA_UART_SW, 1);

  // yjchoi; 120412 temporary block due to build error
  serial_omap_enable_console_port();

  set_fs(old_fs);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_UART] close_hs_uart - end \n");
  #endif

  return 0;

}
Пример #15
0
irqreturn_t felica_rfs_detect_interrupt(int irq, void *dev_id)
{
	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_low_isr - start \n");
	#endif

	schedule_delayed_work(&felica_rfs_interrupt,0);

	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_low_isr - end \n");
	#endif
	return IRQ_HANDLED;
}
Пример #16
0
/*
* Description :
* Input :
* Output :
*/
static void felica_cal_exit(void)
{
#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal_exit - start \n");
#endif

    /* deregister the device file */
    misc_deregister(&felica_cal_device);

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal_exit - end \n");
#endif
}
Пример #17
0
static void felica_rws_exit(void)
{
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_INT] felica_rws_exit - start \n");
  #endif

  free_irq(gpio_to_irq(GPIO_FELICA_INT), NULL);

  misc_deregister(&felica_rws_device);
  
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_INT] felica_rws_exit - end \n");
  #endif
}
Пример #18
0
static irqreturn_t felica_int_low_isr(int irq, void *dev_id)
{
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_int_low_isr - start \n");
  #endif

  schedule_delayed_work(&felica_int_work,0);
  
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] felica_int_low_isr - end \n");
  #endif

	return IRQ_HANDLED;
}
Пример #19
0
/*
* Description :
* Input :
* Output :
*/
static void felica_exit(void)
{
  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA] felica_exit - start \n");
  #endif

  destroy_felica_wake_lock();

  /* deregister the device file */
  misc_deregister(&felica_device);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA] felica_exit - end \n");
  #endif
}
Пример #20
0
int felica_get_rfs_gpio_num(void)
{
/*                                                                         */

  int gpionum = GPIO_FELICA_RFS;

  pr_info("CBAL current rev -> %d \n",lge_get_board_revno());


  if (lge_get_board_revno() < HW_REV_B)
  {
	  pr_info("CBAL RFS-CDET gpio rev old -> %d \n",GPIO_FELICA_RFS_REV_A);

    gpionum = GPIO_FELICA_RFS_REV_A;
  }
  else
  {
	  pr_info("CBAL RFS-CDET gpio rev -> %d \n",GPIO_FELICA_RFS);

    gpionum = GPIO_FELICA_RFS;
  }

	#ifdef FEATURE_DEBUG_LOW
	FELICA_DEBUG_MSG("[FELICA_GPIO] felica_get_rfs_gpio_num(%d) \n",gpionum);
	#endif
	return gpionum;	

	return GPIO_FELICA_RFS;

}
Пример #21
0
/*
* Description :
* Input :
* Output :
*/
static int felica_fsync(struct file *fp, loff_t param1, loff_t param2, int datasync)
{
   FELICA_DEBUG_MSG("[FELICA] felica_fsync\n");

  // TODO: TRANSMIT DATA TO FELICA CHIP

  return 0;
}
Пример #22
0
/*
* Description :
* Input :
* Output :
*/
static int felica_cal_release (struct inode *inode, struct file *fp)
{
#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_CAL] felica_cal_release \n");
#endif

    return 0;
}
Пример #23
0
/*
 *    FUNCTION DEFINITION
 */
static int invoke_felica_apk(void)
{
  char *argv[] = { "/system/bin/sh","/system/bin/am", "start", "-n", FELICA_INTENT, "--activity-clear-top", NULL };

  static char *envp[] = {FELICA_LD_LIBRARY_PATH,FELICA_BOOTCLASSPATH,FELICA_PATH,NULL };
  int rc = 0;

#ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_RWS] invoke felica app... \n");
#endif

  rc = call_usermodehelper( argv[0], argv, envp, UMH_WAIT_EXEC );

  FELICA_DEBUG_MSG("[FELICA_RWS] felica app result : %d \n", rc);

  return rc;
}
/*
* Description :
* Input : None
* Output :
*/
void set_felica_i2c_status(_e_snfc_i2c_status i2c_status)
{
#if defined(CONFIG_LGE_FELICA_NFC)&& defined(FELICA_NFC_INTERFACE)
  #ifdef FEATURE_DEBUG_MED
  FELICA_DEBUG_MSG("[FELICA_COMMON] set_felica_i2c_status : %d \n", i2c_status);
  #endif
  __snfc_i2c_control_set_status(i2c_status);
#endif
}
Пример #25
0
static void felica_rfs_exit(void)
{
  #ifdef FEATURE_DEBUG_LOW 
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_exit - start \n");
  #endif
#ifdef FELICA_LED_SUPPORT

	free_irq(gpio_to_irq(GPIO_FELICA_RFS), NULL);

	destroy_felica_rfs_wake_lock();

#endif
  /* deregister the device file */
  misc_deregister(&felica_rfs_device);  
  #ifdef FEATURE_DEBUG_LOW 
	FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_exit - end \n");
  #endif
}
Пример #26
0
/*
* Description : 
* Input :
* Output :
*/
int felica_i2c_read(unsigned char reg, unsigned char *buf, size_t count)
{
  ssize_t rc = 0;
  mm_segment_t old_fs = get_fs();

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_I2C] felica_i2c_read\n");
  #endif

  set_fs(KERNEL_DS);

	/* dev/i2c-0 device file open */
	rc = felica_i2c_open();
	if (rc)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - felica_i2c_open : %d \n",rc);
		return rc;
	}

	/* Set slave address */
	rc = felica_i2c_set_slave_address(I2C_FELICA_SLAVE_ADDRESS);
	if (rc)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - felica_i2c_set_slave_address : %d \n",rc);
		return rc;
	}

	/* set register address */
	rc = sys_write(fd, &reg, 1);
	if (rc < 0)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - sys_write : %d \n",rc);
		return rc;
	}
	
	/* read register data */
	rc = sys_read(fd, buf, count);

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_I2C] read data : 0x%02x \n",*buf);
  #endif
  
	if (rc < 0)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - sys_read : %d \n",rc);
		return rc;
	}

	/* release i2c */
	rc = felica_i2c_release();
	if (rc)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - felica_i2c_release : %d \n",rc);
		return rc;
	}

	set_fs(old_fs);
	return 0;
}
Пример #27
0
int felica_uart_read(char *buf, size_t count)
{
    mm_segment_t old_fs = get_fs();
    int n;
    int retry = 5;
    
    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] read_hs_uart - start \n");
    #endif

    if (uart_f == NULL)
    {
        #ifdef FEATURE_DEBUG_HIGH
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is not opened\n");
		#endif
        return 0;
    }

    set_fs(KERNEL_DS);

    while ((n = vfs_read(uart_f, buf, count, &uart_f->f_pos)) == -EAGAIN && retry > 0)
    {
        mdelay(10);
        #ifdef FEATURE_DEBUG_MED
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart_read - delay : %d \n", retry);
        #endif
        retry--;
    }


    #ifdef FEATURE_DEBUG_MED
    FELICA_DEBUG_MSG("[FELICA_UART] read_hs_uart - count(%d), num of read data(%d) \n",count ,n);
    #endif

    set_fs(old_fs);

    #ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] read_hs_uart - end \n");
    #endif

    return n;
}
Пример #28
0
/*
 * Description : open uart
 * Input : None
 * Output : success : 0 fail : others
 */
int felica_uart_open(void)
{
    struct termios newtio;
    mm_segment_t old_fs = get_fs();

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] open_hs_uart - start \n");
#endif

    if (uart_f != NULL)
    {
        FELICA_DEBUG_MSG("[FELICA_UART] felica_uart is already opened\n");
        return 0;
    }

    set_fs(KERNEL_DS);

    uart_f = filp_open("/dev/ttyHSL3", O_RDWR | O_NOCTTY | O_NONBLOCK, 0);
    FELICA_DEBUG_MSG("[FELICA_UART] open UART\n");

    if (uart_f == NULL)
    {
        FELICA_DEBUG_MSG("[FELICA_UART] ERROR - can not sys_open \n");
        set_fs(old_fs);
        return -1;
    }

    memset(&newtio, 0, sizeof(newtio));
    newtio.c_cflag = B460800 | CS8 | CLOCAL | CREAD;
    newtio.c_cc[VMIN] = 1;
    newtio.c_cc[VTIME] = 5;
    do_vfs_ioctl(uart_f, -1, TCFLSH, TCIOFLUSH);
    do_vfs_ioctl(uart_f, -1, TCSETSF, (unsigned long)&newtio);

    set_fs(old_fs);

#ifdef FEATURE_DEBUG_LOW
    FELICA_DEBUG_MSG("[FELICA_UART] open_hs_uart - end \n");
#endif

    return 0;
}
Пример #29
0
/*
* Description : 
* Input :
* Output :
*/
int felica_i2c_release (void)
{
  int rc = 0;
  mm_segment_t old_fs = get_fs();

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_I2C] felica_i2c_release\n");
  #endif

	set_fs(KERNEL_DS);
	rc = sys_close(fd);
	if (rc < 0)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - felica_i2c_release : %d \n", rc);
		return rc;
	}
	set_fs(old_fs);

	return 0;
}
Пример #30
0
/*
* Description :
* Input :
* Output :
 */
int felica_i2c_open (void)
{
	mm_segment_t old_fs = get_fs();

  #ifdef FEATURE_DEBUG_LOW
  FELICA_DEBUG_MSG("[FELICA_I2C] felica_i2c_open\n");
  #endif

  set_fs(KERNEL_DS);
  fd = sys_open(FELICA_IC2_NAME, O_RDWR|O_NONBLOCK, 0);
	if (fd < 0)
	{
		FELICA_DEBUG_MSG("[FELICA_I2C] ERROR - felica_i2c_open : %d \n", fd);
		return fd;
	}
	
	set_fs(old_fs);

	return 0;
}