Lines Matching defs:lm

162 static int lm8323_write(struct lm8323_chip *lm, int len, ...)
171 dev_err(&lm->client->dev, "tried to send %d bytes\n", len);
185 ret = i2c_master_send(lm->client, data, len);
187 ret = i2c_master_send(lm->client, data, len);
189 dev_err(&lm->client->dev, "sent %d bytes of %d total\n",
199 static int lm8323_read(struct lm8323_chip *lm, u8 cmd, u8 *buf, int len)
207 ret = i2c_master_send(lm->client, &cmd, 1);
209 ret = i2c_master_send(lm->client, &cmd, 1);
211 dev_err(&lm->client->dev, "sending read cmd 0x%02x failed\n",
216 ret = i2c_master_recv(lm->client, buf, len);
218 dev_err(&lm->client->dev, "wanted %d bytes, got %d\n",
227 static void lm8323_set_active_time(struct lm8323_chip *lm, int time)
229 lm8323_write(lm, 2, LM8323_CMD_SET_ACTIVE, time >> 2);
246 static void process_keys(struct lm8323_chip *lm)
250 int old_keys_down = lm->keys_down;
258 ret = lm8323_read(lm, LM8323_CMD_READ_FIFO, key_fifo, LM8323_FIFO_LEN);
261 dev_err(&lm->client->dev, "Failed reading fifo \n");
269 unsigned short keycode = lm->keymap[key];
271 dev_vdbg(&lm->client->dev, "key 0x%02x %s\n",
274 if (lm->kp_enabled) {
275 input_event(lm->idev, EV_MSC, MSC_SCAN, key);
276 input_report_key(lm->idev, keycode, isdown);
277 input_sync(lm->idev);
281 lm->keys_down++;
283 lm->keys_down--;
291 if (!old_keys_down && lm->keys_down)
292 lm8323_set_active_time(lm, 0);
293 if (old_keys_down && !lm->keys_down)
294 lm8323_set_active_time(lm, lm->active_time);
297 static void lm8323_process_error(struct lm8323_chip *lm)
301 if (lm8323_read(lm, LM8323_CMD_READ_ERR, &error, 1) == 1) {
303 dev_vdbg(&lm->client->dev, "fifo overflow!\n");
305 dev_vdbg(&lm->client->dev,
308 dev_vdbg(&lm->client->dev,
311 dev_vdbg(&lm->client->dev, "bad command parameter\n");
315 static void lm8323_reset(struct lm8323_chip *lm)
318 lm8323_write(lm, 2, LM8323_CMD_RESET, 0xAA);
321 static int lm8323_configure(struct lm8323_chip *lm)
323 int keysize = (lm->size_x << 4) | lm->size_y;
325 int debounce = lm->debounce_time >> 2;
326 int active = lm->active_time >> 2;
335 lm8323_write(lm, 2, LM8323_CMD_WRITE_CFG, 0);
336 lm8323_write(lm, 2, LM8323_CMD_WRITE_CLOCK, clock);
337 lm8323_write(lm, 2, LM8323_CMD_SET_KEY_SIZE, keysize);
338 lm8323_set_active_time(lm, lm->active_time);
339 lm8323_write(lm, 2, LM8323_CMD_SET_DEBOUNCE, debounce);
340 lm8323_write(lm, 3, LM8323_CMD_WRITE_PORT_STATE, 0xff, 0xff);
341 lm8323_write(lm, 3, LM8323_CMD_WRITE_PORT_SEL, 0, 0);
366 struct lm8323_chip *lm = _lm;
370 mutex_lock(&lm->lock);
372 while ((lm8323_read(lm, LM8323_CMD_READ_INT, &ints, 1) == 1) && ints) {
374 process_keys(lm);
377 dev_vdbg(&lm->client->dev, "rotator fired\n");
380 dev_vdbg(&lm->client->dev, "error!\n");
381 lm8323_process_error(lm);
384 dev_err(&lm->client->dev, "chip lost config; "
386 lm8323_configure(lm);
390 dev_vdbg(&lm->client->dev,
392 pwm_done(&lm->pwm[i]);
397 mutex_unlock(&lm->lock);
405 static int lm8323_read_id(struct lm8323_chip *lm, u8 *buf)
409 bytes = lm8323_read(lm, LM8323_CMD_READ_ID, buf, 2);
501 struct lm8323_chip *lm = pwm->chip;
513 mutex_lock(&lm->lock);
514 if (likely(!lm->pm_suspend))
518 mutex_unlock(&lm->lock);
555 static int init_pwm(struct lm8323_chip *lm, int id, struct device *dev,
563 pwm = &lm->pwm[id - 1];
573 pwm->chip = lm;
594 struct lm8323_chip *lm = dev_get_drvdata(dev);
596 return sprintf(buf, "%u\n", !lm->kp_enabled);
603 struct lm8323_chip *lm = dev_get_drvdata(dev);
611 mutex_lock(&lm->lock);
612 lm->kp_enabled = !i;
613 mutex_unlock(&lm->lock);
629 struct lm8323_chip *lm;
652 lm = devm_kzalloc(&client->dev, sizeof(*lm), GFP_KERNEL);
653 if (!lm)
660 lm->client = client;
661 lm->idev = idev;
662 mutex_init(&lm->lock);
664 lm->size_x = pdata->size_x;
665 lm->size_y = pdata->size_y;
667 lm->size_x, lm->size_y);
669 lm->debounce_time = pdata->debounce_time;
670 lm->active_time = pdata->active_time;
672 lm8323_reset(lm);
679 while (lm8323_read(lm, LM8323_CMD_READ_INT, data, 1) == 1) {
692 lm8323_configure(lm);
695 if (lm8323_read_id(lm, data) != 0) {
701 err = init_pwm(lm, pwm + 1, &client->dev,
707 lm->kp_enabled = true;
710 snprintf(lm->phys, sizeof(lm->phys),
712 idev->phys = lm->phys;
718 lm->keymap[i] = pdata->keymap[i];
734 "lm8323", lm);
740 i2c_set_clientdata(client, lm);
755 struct lm8323_chip *lm = i2c_get_clientdata(client);
761 mutex_lock(&lm->lock);
762 lm->pm_suspend = true;
763 mutex_unlock(&lm->lock);
766 if (lm->pwm[i].enabled)
767 led_classdev_suspend(&lm->pwm[i].cdev);
775 struct lm8323_chip *lm = i2c_get_clientdata(client);
778 mutex_lock(&lm->lock);
779 lm->pm_suspend = false;
780 mutex_unlock(&lm->lock);
783 if (lm->pwm[i].enabled)
784 led_classdev_resume(&lm->pwm[i].cdev);