static int felica_cen_write(u8 arg, struct felica_dev *dev) { int i; u8 state; if (!dev) return -EINVAL; dev_dbg(dev->device_cen.this_device, ": %s\n", __func__); if (arg > 0x1) { dev_err(dev->device_cen.this_device, "%s: Error. Invalid val @CEN write.\n", __func__); return -EINVAL; } for (i = 0; i < CEN_RETRY_MAX; i++) { felica_cen_read(&state, dev); if (arg == state) goto end; gpio_set_value_cansleep( PM8921_GPIO_PM_TO_SYS(PM_GPIO_FELICA_FF), 0); msleep_interruptible(1); gpio_set_value_cansleep( PM8921_GPIO_PM_TO_SYS(PM_GPIO_FELICA_FF), 1); msleep_interruptible(1); gpio_set_value_cansleep( PM8921_GPIO_PM_TO_SYS(PM_GPIO_FELICA_FF), 0); } dev_err(dev->device_cen.this_device, "%s: Error. Cannot write CEN.\n", __func__); return -EIO; end: return 0; }
static int felica_cen_write(u8 arg, void *user) { struct cxd2235agg_data *my_data = user; int i; u8 state; if (!my_data) return -EINVAL; dev_dbg(&my_data->pdev->dev, ": %s: %x\n", __func__, arg); if (arg > 0x1) { dev_err(&my_data->pdev->dev, "%s: Error. Invalid val @CEN write.\n", __func__); return -EINVAL; } for (i = 0; i < CEN_RETRY_MAX; i++) { felica_cen_read(&state, my_data); if (arg == state) goto end; gpio_set_value_cansleep(my_data->gpios[FF_PIN], 0); msleep_interruptible(1); gpio_set_value_cansleep(my_data->gpios[FF_PIN], 1); msleep_interruptible(1); gpio_set_value_cansleep(my_data->gpios[FF_PIN], 0); } dev_err(&my_data->pdev->dev, "%s: Error. Cannot write CEN.\n", __func__); return -EIO; end: return 0; }