linux/drivers/input/input.c
<<
>>
Prefs
   1/*
   2 * The input core
   3 *
   4 * Copyright (c) 1999-2002 Vojtech Pavlik
   5 */
   6
   7/*
   8 * This program is free software; you can redistribute it and/or modify it
   9 * under the terms of the GNU General Public License version 2 as published by
  10 * the Free Software Foundation.
  11 */
  12
  13#define pr_fmt(fmt) KBUILD_BASENAME ": " fmt
  14
  15#include <linux/init.h>
  16#include <linux/types.h>
  17#include <linux/idr.h>
  18#include <linux/input/mt.h>
  19#include <linux/module.h>
  20#include <linux/slab.h>
  21#include <linux/random.h>
  22#include <linux/major.h>
  23#include <linux/proc_fs.h>
  24#include <linux/sched.h>
  25#include <linux/seq_file.h>
  26#include <linux/poll.h>
  27#include <linux/device.h>
  28#include <linux/mutex.h>
  29#include <linux/rcupdate.h>
  30#include "input-compat.h"
  31
  32MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
  33MODULE_DESCRIPTION("Input core");
  34MODULE_LICENSE("GPL");
  35
  36#define INPUT_MAX_CHAR_DEVICES          1024
  37#define INPUT_FIRST_DYNAMIC_DEV         256
  38static DEFINE_IDA(input_ida);
  39
  40static LIST_HEAD(input_dev_list);
  41static LIST_HEAD(input_handler_list);
  42
  43/*
  44 * input_mutex protects access to both input_dev_list and input_handler_list.
  45 * This also causes input_[un]register_device and input_[un]register_handler
  46 * be mutually exclusive which simplifies locking in drivers implementing
  47 * input handlers.
  48 */
  49static DEFINE_MUTEX(input_mutex);
  50
  51static const struct input_value input_value_sync = { EV_SYN, SYN_REPORT, 1 };
  52
  53static inline int is_event_supported(unsigned int code,
  54                                     unsigned long *bm, unsigned int max)
  55{
  56        return code <= max && test_bit(code, bm);
  57}
  58
  59static int input_defuzz_abs_event(int value, int old_val, int fuzz)
  60{
  61        if (fuzz) {
  62                if (value > old_val - fuzz / 2 && value < old_val + fuzz / 2)
  63                        return old_val;
  64
  65                if (value > old_val - fuzz && value < old_val + fuzz)
  66                        return (old_val * 3 + value) / 4;
  67
  68                if (value > old_val - fuzz * 2 && value < old_val + fuzz * 2)
  69                        return (old_val + value) / 2;
  70        }
  71
  72        return value;
  73}
  74
  75static void input_start_autorepeat(struct input_dev *dev, int code)
  76{
  77        if (test_bit(EV_REP, dev->evbit) &&
  78            dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] &&
  79            dev->timer.data) {
  80                dev->repeat_key = code;
  81                mod_timer(&dev->timer,
  82                          jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
  83        }
  84}
  85
  86static void input_stop_autorepeat(struct input_dev *dev)
  87{
  88        del_timer(&dev->timer);
  89}
  90
  91/*
  92 * Pass event first through all filters and then, if event has not been
  93 * filtered out, through all open handles. This function is called with
  94 * dev->event_lock held and interrupts disabled.
  95 */
  96static unsigned int input_to_handler(struct input_handle *handle,
  97                        struct input_value *vals, unsigned int count)
  98{
  99        struct input_handler *handler = handle->handler;
 100        struct input_value *end = vals;
 101        struct input_value *v;
 102
 103        if (handler->filter) {
 104                for (v = vals; v != vals + count; v++) {
 105                        if (handler->filter(handle, v->type, v->code, v->value))
 106                                continue;
 107                        if (end != v)
 108                                *end = *v;
 109                        end++;
 110                }
 111                count = end - vals;
 112        }
 113
 114        if (!count)
 115                return 0;
 116
 117        if (handler->events)
 118                handler->events(handle, vals, count);
 119        else if (handler->event)
 120                for (v = vals; v != vals + count; v++)
 121                        handler->event(handle, v->type, v->code, v->value);
 122
 123        return count;
 124}
 125
 126/*
 127 * Pass values first through all filters and then, if event has not been
 128 * filtered out, through all open handles. This function is called with
 129 * dev->event_lock held and interrupts disabled.
 130 */
 131static void input_pass_values(struct input_dev *dev,
 132                              struct input_value *vals, unsigned int count)
 133{
 134        struct input_handle *handle;
 135        struct input_value *v;
 136
 137        if (!count)
 138                return;
 139
 140        rcu_read_lock();
 141
 142        handle = rcu_dereference(dev->grab);
 143        if (handle) {
 144                count = input_to_handler(handle, vals, count);
 145        } else {
 146                list_for_each_entry_rcu(handle, &dev->h_list, d_node)
 147                        if (handle->open) {
 148                                count = input_to_handler(handle, vals, count);
 149                                if (!count)
 150                                        break;
 151                        }
 152        }
 153
 154        rcu_read_unlock();
 155
 156        add_input_randomness(vals->type, vals->code, vals->value);
 157
 158        /* trigger auto repeat for key events */
 159        if (test_bit(EV_REP, dev->evbit) && test_bit(EV_KEY, dev->evbit)) {
 160                for (v = vals; v != vals + count; v++) {
 161                        if (v->type == EV_KEY && v->value != 2) {
 162                                if (v->value)
 163                                        input_start_autorepeat(dev, v->code);
 164                                else
 165                                        input_stop_autorepeat(dev);
 166                        }
 167                }
 168        }
 169}
 170
 171static void input_pass_event(struct input_dev *dev,
 172                             unsigned int type, unsigned int code, int value)
 173{
 174        struct input_value vals[] = { { type, code, value } };
 175
 176        input_pass_values(dev, vals, ARRAY_SIZE(vals));
 177}
 178
 179/*
 180 * Generate software autorepeat event. Note that we take
 181 * dev->event_lock here to avoid racing with input_event
 182 * which may cause keys get "stuck".
 183 */
 184static void input_repeat_key(unsigned long data)
 185{
 186        struct input_dev *dev = (void *) data;
 187        unsigned long flags;
 188
 189        spin_lock_irqsave(&dev->event_lock, flags);
 190
 191        if (test_bit(dev->repeat_key, dev->key) &&
 192            is_event_supported(dev->repeat_key, dev->keybit, KEY_MAX)) {
 193                struct input_value vals[] =  {
 194                        { EV_KEY, dev->repeat_key, 2 },
 195                        input_value_sync
 196                };
 197
 198                input_pass_values(dev, vals, ARRAY_SIZE(vals));
 199
 200                if (dev->rep[REP_PERIOD])
 201                        mod_timer(&dev->timer, jiffies +
 202                                        msecs_to_jiffies(dev->rep[REP_PERIOD]));
 203        }
 204
 205        spin_unlock_irqrestore(&dev->event_lock, flags);
 206}
 207
 208#define INPUT_IGNORE_EVENT      0
 209#define INPUT_PASS_TO_HANDLERS  1
 210#define INPUT_PASS_TO_DEVICE    2
 211#define INPUT_SLOT              4
 212#define INPUT_FLUSH             8
 213#define INPUT_PASS_TO_ALL       (INPUT_PASS_TO_HANDLERS | INPUT_PASS_TO_DEVICE)
 214
 215static int input_handle_abs_event(struct input_dev *dev,
 216                                  unsigned int code, int *pval)
 217{
 218        struct input_mt *mt = dev->mt;
 219        bool is_mt_event;
 220        int *pold;
 221
 222        if (code == ABS_MT_SLOT) {
 223                /*
 224                 * "Stage" the event; we'll flush it later, when we
 225                 * get actual touch data.
 226                 */
 227                if (mt && *pval >= 0 && *pval < mt->num_slots)
 228                        mt->slot = *pval;
 229
 230                return INPUT_IGNORE_EVENT;
 231        }
 232
 233        is_mt_event = input_is_mt_value(code);
 234
 235        if (!is_mt_event) {
 236                pold = &dev->absinfo[code].value;
 237        } else if (mt) {
 238                pold = &mt->slots[mt->slot].abs[code - ABS_MT_FIRST];
 239        } else {
 240                /*
 241                 * Bypass filtering for multi-touch events when
 242                 * not employing slots.
 243                 */
 244                pold = NULL;
 245        }
 246
 247        if (pold) {
 248                *pval = input_defuzz_abs_event(*pval, *pold,
 249                                                dev->absinfo[code].fuzz);
 250                if (*pold == *pval)
 251                        return INPUT_IGNORE_EVENT;
 252
 253                *pold = *pval;
 254        }
 255
 256        /* Flush pending "slot" event */
 257        if (is_mt_event && mt && mt->slot != input_abs_get_val(dev, ABS_MT_SLOT)) {
 258                input_abs_set_val(dev, ABS_MT_SLOT, mt->slot);
 259                return INPUT_PASS_TO_HANDLERS | INPUT_SLOT;
 260        }
 261
 262        return INPUT_PASS_TO_HANDLERS;
 263}
 264
 265static int input_get_disposition(struct input_dev *dev,
 266                          unsigned int type, unsigned int code, int *pval)
 267{
 268        int disposition = INPUT_IGNORE_EVENT;
 269        int value = *pval;
 270
 271        switch (type) {
 272
 273        case EV_SYN:
 274                switch (code) {
 275                case SYN_CONFIG:
 276                        disposition = INPUT_PASS_TO_ALL;
 277                        break;
 278
 279                case SYN_REPORT:
 280                        disposition = INPUT_PASS_TO_HANDLERS | INPUT_FLUSH;
 281                        break;
 282                case SYN_MT_REPORT:
 283                        disposition = INPUT_PASS_TO_HANDLERS;
 284                        break;
 285                }
 286                break;
 287
 288        case EV_KEY:
 289                if (is_event_supported(code, dev->keybit, KEY_MAX)) {
 290
 291                        /* auto-repeat bypasses state updates */
 292                        if (value == 2) {
 293                                disposition = INPUT_PASS_TO_HANDLERS;
 294                                break;
 295                        }
 296
 297                        if (!!test_bit(code, dev->key) != !!value) {
 298
 299                                __change_bit(code, dev->key);
 300                                disposition = INPUT_PASS_TO_HANDLERS;
 301                        }
 302                }
 303                break;
 304
 305        case EV_SW:
 306                if (is_event_supported(code, dev->swbit, SW_MAX) &&
 307                    !!test_bit(code, dev->sw) != !!value) {
 308
 309                        __change_bit(code, dev->sw);
 310                        disposition = INPUT_PASS_TO_HANDLERS;
 311                }
 312                break;
 313
 314        case EV_ABS:
 315                if (is_event_supported(code, dev->absbit, ABS_MAX))
 316                        disposition = input_handle_abs_event(dev, code, &value);
 317
 318                break;
 319
 320        case EV_REL:
 321                if (is_event_supported(code, dev->relbit, REL_MAX) && value)
 322                        disposition = INPUT_PASS_TO_HANDLERS;
 323
 324                break;
 325
 326        case EV_MSC:
 327                if (is_event_supported(code, dev->mscbit, MSC_MAX))
 328                        disposition = INPUT_PASS_TO_ALL;
 329
 330                break;
 331
 332        case EV_LED:
 333                if (is_event_supported(code, dev->ledbit, LED_MAX) &&
 334                    !!test_bit(code, dev->led) != !!value) {
 335
 336                        __change_bit(code, dev->led);
 337                        disposition = INPUT_PASS_TO_ALL;
 338                }
 339                break;
 340
 341        case EV_SND:
 342                if (is_event_supported(code, dev->sndbit, SND_MAX)) {
 343
 344                        if (!!test_bit(code, dev->snd) != !!value)
 345                                __change_bit(code, dev->snd);
 346                        disposition = INPUT_PASS_TO_ALL;
 347                }
 348                break;
 349
 350        case EV_REP:
 351                if (code <= REP_MAX && value >= 0 && dev->rep[code] != value) {
 352                        dev->rep[code] = value;
 353                        disposition = INPUT_PASS_TO_ALL;
 354                }
 355                break;
 356
 357        case EV_FF:
 358                if (value >= 0)
 359                        disposition = INPUT_PASS_TO_ALL;
 360                break;
 361
 362        case EV_PWR:
 363                disposition = INPUT_PASS_TO_ALL;
 364                break;
 365        }
 366
 367        *pval = value;
 368        return disposition;
 369}
 370
 371static void input_handle_event(struct input_dev *dev,
 372                               unsigned int type, unsigned int code, int value)
 373{
 374        int disposition;
 375
 376        disposition = input_get_disposition(dev, type, code, &value);
 377
 378        if ((disposition & INPUT_PASS_TO_DEVICE) && dev->event)
 379                dev->event(dev, type, code, value);
 380
 381        if (!dev->vals)
 382                return;
 383
 384        if (disposition & INPUT_PASS_TO_HANDLERS) {
 385                struct input_value *v;
 386
 387                if (disposition & INPUT_SLOT) {
 388                        v = &dev->vals[dev->num_vals++];
 389                        v->type = EV_ABS;
 390                        v->code = ABS_MT_SLOT;
 391                        v->value = dev->mt->slot;
 392                }
 393
 394                v = &dev->vals[dev->num_vals++];
 395                v->type = type;
 396                v->code = code;
 397                v->value = value;
 398        }
 399
 400        if (disposition & INPUT_FLUSH) {
 401                if (dev->num_vals >= 2)
 402                        input_pass_values(dev, dev->vals, dev->num_vals);
 403                dev->num_vals = 0;
 404        } else if (dev->num_vals >= dev->max_vals - 2) {
 405                dev->vals[dev->num_vals++] = input_value_sync;
 406                input_pass_values(dev, dev->vals, dev->num_vals);
 407                dev->num_vals = 0;
 408        }
 409
 410}
 411
 412/**
 413 * input_event() - report new input event
 414 * @dev: device that generated the event
 415 * @type: type of the event
 416 * @code: event code
 417 * @value: value of the event
 418 *
 419 * This function should be used by drivers implementing various input
 420 * devices to report input events. See also input_inject_event().
 421 *
 422 * NOTE: input_event() may be safely used right after input device was
 423 * allocated with input_allocate_device(), even before it is registered
 424 * with input_register_device(), but the event will not reach any of the
 425 * input handlers. Such early invocation of input_event() may be used
 426 * to 'seed' initial state of a switch or initial position of absolute
 427 * axis, etc.
 428 */
 429void input_event(struct input_dev *dev,
 430                 unsigned int type, unsigned int code, int value)
 431{
 432        unsigned long flags;
 433
 434        if (is_event_supported(type, dev->evbit, EV_MAX)) {
 435
 436                spin_lock_irqsave(&dev->event_lock, flags);
 437                input_handle_event(dev, type, code, value);
 438                spin_unlock_irqrestore(&dev->event_lock, flags);
 439        }
 440}
 441EXPORT_SYMBOL(input_event);
 442
 443/**
 444 * input_inject_event() - send input event from input handler
 445 * @handle: input handle to send event through
 446 * @type: type of the event
 447 * @code: event code
 448 * @value: value of the event
 449 *
 450 * Similar to input_event() but will ignore event if device is
 451 * "grabbed" and handle injecting event is not the one that owns
 452 * the device.
 453 */
 454void input_inject_event(struct input_handle *handle,
 455                        unsigned int type, unsigned int code, int value)
 456{
 457        struct input_dev *dev = handle->dev;
 458        struct input_handle *grab;
 459        unsigned long flags;
 460
 461        if (is_event_supported(type, dev->evbit, EV_MAX)) {
 462                spin_lock_irqsave(&dev->event_lock, flags);
 463
 464                rcu_read_lock();
 465                grab = rcu_dereference(dev->grab);
 466                if (!grab || grab == handle)
 467                        input_handle_event(dev, type, code, value);
 468                rcu_read_unlock();
 469
 470                spin_unlock_irqrestore(&dev->event_lock, flags);
 471        }
 472}
 473EXPORT_SYMBOL(input_inject_event);
 474
 475/**
 476 * input_alloc_absinfo - allocates array of input_absinfo structs
 477 * @dev: the input device emitting absolute events
 478 *
 479 * If the absinfo struct the caller asked for is already allocated, this
 480 * functions will not do anything.
 481 */
 482void input_alloc_absinfo(struct input_dev *dev)
 483{
 484        if (!dev->absinfo)
 485                dev->absinfo = kcalloc(ABS_CNT, sizeof(struct input_absinfo),
 486                                        GFP_KERNEL);
 487
 488        WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__);
 489}
 490EXPORT_SYMBOL(input_alloc_absinfo);
 491
 492void input_set_abs_params(struct input_dev *dev, unsigned int axis,
 493                          int min, int max, int fuzz, int flat)
 494{
 495        struct input_absinfo *absinfo;
 496
 497        input_alloc_absinfo(dev);
 498        if (!dev->absinfo)
 499                return;
 500
 501        absinfo = &dev->absinfo[axis];
 502        absinfo->minimum = min;
 503        absinfo->maximum = max;
 504        absinfo->fuzz = fuzz;
 505        absinfo->flat = flat;
 506
 507        __set_bit(EV_ABS, dev->evbit);
 508        __set_bit(axis, dev->absbit);
 509}
 510EXPORT_SYMBOL(input_set_abs_params);
 511
 512
 513/**
 514 * input_grab_device - grabs device for exclusive use
 515 * @handle: input handle that wants to own the device
 516 *
 517 * When a device is grabbed by an input handle all events generated by
 518 * the device are delivered only to this handle. Also events injected
 519 * by other input handles are ignored while device is grabbed.
 520 */
 521int input_grab_device(struct input_handle *handle)
 522{
 523        struct input_dev *dev = handle->dev;
 524        int retval;
 525
 526        retval = mutex_lock_interruptible(&dev->mutex);
 527        if (retval)
 528                return retval;
 529
 530        if (dev->grab) {
 531                retval = -EBUSY;
 532                goto out;
 533        }
 534
 535        rcu_assign_pointer(dev->grab, handle);
 536
 537 out:
 538        mutex_unlock(&dev->mutex);
 539        return retval;
 540}
 541EXPORT_SYMBOL(input_grab_device);
 542
 543static void __input_release_device(struct input_handle *handle)
 544{
 545        struct input_dev *dev = handle->dev;
 546        struct input_handle *grabber;
 547
 548        grabber = rcu_dereference_protected(dev->grab,
 549                                            lockdep_is_held(&dev->mutex));
 550        if (grabber == handle) {
 551                rcu_assign_pointer(dev->grab, NULL);
 552                /* Make sure input_pass_event() notices that grab is gone */
 553                synchronize_rcu();
 554
 555                list_for_each_entry(handle, &dev->h_list, d_node)
 556                        if (handle->open && handle->handler->start)
 557                                handle->handler->start(handle);
 558        }
 559}
 560
 561/**
 562 * input_release_device - release previously grabbed device
 563 * @handle: input handle that owns the device
 564 *
 565 * Releases previously grabbed device so that other input handles can
 566 * start receiving input events. Upon release all handlers attached
 567 * to the device have their start() method called so they have a change
 568 * to synchronize device state with the rest of the system.
 569 */
 570void input_release_device(struct input_handle *handle)
 571{
 572        struct input_dev *dev = handle->dev;
 573
 574        mutex_lock(&dev->mutex);
 575        __input_release_device(handle);
 576        mutex_unlock(&dev->mutex);
 577}
 578EXPORT_SYMBOL(input_release_device);
 579
 580/**
 581 * input_open_device - open input device
 582 * @handle: handle through which device is being accessed
 583 *
 584 * This function should be called by input handlers when they
 585 * want to start receive events from given input device.
 586 */
 587int input_open_device(struct input_handle *handle)
 588{
 589        struct input_dev *dev = handle->dev;
 590        int retval;
 591
 592        retval = mutex_lock_interruptible(&dev->mutex);
 593        if (retval)
 594                return retval;
 595
 596        if (dev->going_away) {
 597                retval = -ENODEV;
 598                goto out;
 599        }
 600
 601        handle->open++;
 602
 603        if (!dev->users++ && dev->open)
 604                retval = dev->open(dev);
 605
 606        if (retval) {
 607                dev->users--;
 608                if (!--handle->open) {
 609                        /*
 610                         * Make sure we are not delivering any more events
 611                         * through this handle
 612                         */
 613                        synchronize_rcu();
 614                }
 615        }
 616
 617 out:
 618        mutex_unlock(&dev->mutex);
 619        return retval;
 620}
 621EXPORT_SYMBOL(input_open_device);
 622
 623int input_flush_device(struct input_handle *handle, struct file *file)
 624{
 625        struct input_dev *dev = handle->dev;
 626        int retval;
 627
 628        retval = mutex_lock_interruptible(&dev->mutex);
 629        if (retval)
 630                return retval;
 631
 632        if (dev->flush)
 633                retval = dev->flush(dev, file);
 634
 635        mutex_unlock(&dev->mutex);
 636        return retval;
 637}
 638EXPORT_SYMBOL(input_flush_device);
 639
 640/**
 641 * input_close_device - close input device
 642 * @handle: handle through which device is being accessed
 643 *
 644 * This function should be called by input handlers when they
 645 * want to stop receive events from given input device.
 646 */
 647void input_close_device(struct input_handle *handle)
 648{
 649        struct input_dev *dev = handle->dev;
 650
 651        mutex_lock(&dev->mutex);
 652
 653        __input_release_device(handle);
 654
 655        if (!--dev->users && dev->close)
 656                dev->close(dev);
 657
 658        if (!--handle->open) {
 659                /*
 660                 * synchronize_rcu() makes sure that input_pass_event()
 661                 * completed and that no more input events are delivered
 662                 * through this handle
 663                 */
 664                synchronize_rcu();
 665        }
 666
 667        mutex_unlock(&dev->mutex);
 668}
 669EXPORT_SYMBOL(input_close_device);
 670
 671/*
 672 * Simulate keyup events for all keys that are marked as pressed.
 673 * The function must be called with dev->event_lock held.
 674 */
 675static void input_dev_release_keys(struct input_dev *dev)
 676{
 677        int code;
 678
 679        if (is_event_supported(EV_KEY, dev->evbit, EV_MAX)) {
 680                for (code = 0; code <= KEY_MAX; code++) {
 681                        if (is_event_supported(code, dev->keybit, KEY_MAX) &&
 682                            __test_and_clear_bit(code, dev->key)) {
 683                                input_pass_event(dev, EV_KEY, code, 0);
 684                        }
 685                }
 686                input_pass_event(dev, EV_SYN, SYN_REPORT, 1);
 687        }
 688}
 689
 690/*
 691 * Prepare device for unregistering
 692 */
 693static void input_disconnect_device(struct input_dev *dev)
 694{
 695        struct input_handle *handle;
 696
 697        /*
 698         * Mark device as going away. Note that we take dev->mutex here
 699         * not to protect access to dev->going_away but rather to ensure
 700         * that there are no threads in the middle of input_open_device()
 701         */
 702        mutex_lock(&dev->mutex);
 703        dev->going_away = true;
 704        mutex_unlock(&dev->mutex);
 705
 706        spin_lock_irq(&dev->event_lock);
 707
 708        /*
 709         * Simulate keyup events for all pressed keys so that handlers
 710         * are not left with "stuck" keys. The driver may continue
 711         * generate events even after we done here but they will not
 712         * reach any handlers.
 713         */
 714        input_dev_release_keys(dev);
 715
 716        list_for_each_entry(handle, &dev->h_list, d_node)
 717                handle->open = 0;
 718
 719        spin_unlock_irq(&dev->event_lock);
 720}
 721
 722/**
 723 * input_scancode_to_scalar() - converts scancode in &struct input_keymap_entry
 724 * @ke: keymap entry containing scancode to be converted.
 725 * @scancode: pointer to the location where converted scancode should
 726 *      be stored.
 727 *
 728 * This function is used to convert scancode stored in &struct keymap_entry
 729 * into scalar form understood by legacy keymap handling methods. These
 730 * methods expect scancodes to be represented as 'unsigned int'.
 731 */
 732int input_scancode_to_scalar(const struct input_keymap_entry *ke,
 733                             unsigned int *scancode)
 734{
 735        switch (ke->len) {
 736        case 1:
 737                *scancode = *((u8 *)ke->scancode);
 738                break;
 739
 740        case 2:
 741                *scancode = *((u16 *)ke->scancode);
 742                break;
 743
 744        case 4:
 745                *scancode = *((u32 *)ke->scancode);
 746                break;
 747
 748        default:
 749                return -EINVAL;
 750        }
 751
 752        return 0;
 753}
 754EXPORT_SYMBOL(input_scancode_to_scalar);
 755
 756/*
 757 * Those routines handle the default case where no [gs]etkeycode() is
 758 * defined. In this case, an array indexed by the scancode is used.
 759 */
 760
 761static unsigned int input_fetch_keycode(struct input_dev *dev,
 762                                        unsigned int index)
 763{
 764        switch (dev->keycodesize) {
 765        case 1:
 766                return ((u8 *)dev->keycode)[index];
 767
 768        case 2:
 769                return ((u16 *)dev->keycode)[index];
 770
 771        default:
 772                return ((u32 *)dev->keycode)[index];
 773        }
 774}
 775
 776static int input_default_getkeycode(struct input_dev *dev,
 777                                    struct input_keymap_entry *ke)
 778{
 779        unsigned int index;
 780        int error;
 781
 782        if (!dev->keycodesize)
 783                return -EINVAL;
 784
 785        if (ke->flags & INPUT_KEYMAP_BY_INDEX)
 786                index = ke->index;
 787        else {
 788                error = input_scancode_to_scalar(ke, &index);
 789                if (error)
 790                        return error;
 791        }
 792
 793        if (index >= dev->keycodemax)
 794                return -EINVAL;
 795
 796        ke->keycode = input_fetch_keycode(dev, index);
 797        ke->index = index;
 798        ke->len = sizeof(index);
 799        memcpy(ke->scancode, &index, sizeof(index));
 800
 801        return 0;
 802}
 803
 804static int input_default_setkeycode(struct input_dev *dev,
 805                                    const struct input_keymap_entry *ke,
 806                                    unsigned int *old_keycode)
 807{
 808        unsigned int index;
 809        int error;
 810        int i;
 811
 812        if (!dev->keycodesize)
 813                return -EINVAL;
 814
 815        if (ke->flags & INPUT_KEYMAP_BY_INDEX) {
 816                index = ke->index;
 817        } else {
 818                error = input_scancode_to_scalar(ke, &index);
 819                if (error)
 820                        return error;
 821        }
 822
 823        if (index >= dev->keycodemax)
 824                return -EINVAL;
 825
 826        if (dev->keycodesize < sizeof(ke->keycode) &&
 827                        (ke->keycode >> (dev->keycodesize * 8)))
 828                return -EINVAL;
 829
 830        switch (dev->keycodesize) {
 831                case 1: {
 832                        u8 *k = (u8 *)dev->keycode;
 833                        *old_keycode = k[index];
 834                        k[index] = ke->keycode;
 835                        break;
 836                }
 837                case 2: {
 838                        u16 *k = (u16 *)dev->keycode;
 839                        *old_keycode = k[index];
 840                        k[index] = ke->keycode;
 841                        break;
 842                }
 843                default: {
 844                        u32 *k = (u32 *)dev->keycode;
 845                        *old_keycode = k[index];
 846                        k[index] = ke->keycode;
 847                        break;
 848                }
 849        }
 850
 851        __clear_bit(*old_keycode, dev->keybit);
 852        __set_bit(ke->keycode, dev->keybit);
 853
 854        for (i = 0; i < dev->keycodemax; i++) {
 855                if (input_fetch_keycode(dev, i) == *old_keycode) {
 856                        __set_bit(*old_keycode, dev->keybit);
 857                        break; /* Setting the bit twice is useless, so break */
 858                }
 859        }
 860
 861        return 0;
 862}
 863
 864/**
 865 * input_get_keycode - retrieve keycode currently mapped to a given scancode
 866 * @dev: input device which keymap is being queried
 867 * @ke: keymap entry
 868 *
 869 * This function should be called by anyone interested in retrieving current
 870 * keymap. Presently evdev handlers use it.
 871 */
 872int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke)
 873{
 874        unsigned long flags;
 875        int retval;
 876
 877        spin_lock_irqsave(&dev->event_lock, flags);
 878        retval = dev->getkeycode(dev, ke);
 879        spin_unlock_irqrestore(&dev->event_lock, flags);
 880
 881        return retval;
 882}
 883EXPORT_SYMBOL(input_get_keycode);
 884
 885/**
 886 * input_set_keycode - attribute a keycode to a given scancode
 887 * @dev: input device which keymap is being updated
 888 * @ke: new keymap entry
 889 *
 890 * This function should be called by anyone needing to update current
 891 * keymap. Presently keyboard and evdev handlers use it.
 892 */
 893int input_set_keycode(struct input_dev *dev,
 894                      const struct input_keymap_entry *ke)
 895{
 896        unsigned long flags;
 897        unsigned int old_keycode;
 898        int retval;
 899
 900        if (ke->keycode > KEY_MAX)
 901                return -EINVAL;
 902
 903        spin_lock_irqsave(&dev->event_lock, flags);
 904
 905        retval = dev->setkeycode(dev, ke, &old_keycode);
 906        if (retval)
 907                goto out;
 908
 909        /* Make sure KEY_RESERVED did not get enabled. */
 910        __clear_bit(KEY_RESERVED, dev->keybit);
 911
 912        /*
 913         * Simulate keyup event if keycode is not present
 914         * in the keymap anymore
 915         */
 916        if (test_bit(EV_KEY, dev->evbit) &&
 917            !is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
 918            __test_and_clear_bit(old_keycode, dev->key)) {
 919                struct input_value vals[] =  {
 920                        { EV_KEY, old_keycode, 0 },
 921                        input_value_sync
 922                };
 923
 924                input_pass_values(dev, vals, ARRAY_SIZE(vals));
 925        }
 926
 927 out:
 928        spin_unlock_irqrestore(&dev->event_lock, flags);
 929
 930        return retval;
 931}
 932EXPORT_SYMBOL(input_set_keycode);
 933
 934static const struct input_device_id *input_match_device(struct input_handler *handler,
 935                                                        struct input_dev *dev)
 936{
 937        const struct input_device_id *id;
 938
 939        for (id = handler->id_table; id->flags || id->driver_info; id++) {
 940
 941                if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
 942                        if (id->bustype != dev->id.bustype)
 943                                continue;
 944
 945                if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
 946                        if (id->vendor != dev->id.vendor)
 947                                continue;
 948
 949                if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
 950                        if (id->product != dev->id.product)
 951                                continue;
 952
 953                if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
 954                        if (id->version != dev->id.version)
 955                                continue;
 956
 957                if (!bitmap_subset(id->evbit, dev->evbit, EV_MAX))
 958                        continue;
 959
 960                if (!bitmap_subset(id->keybit, dev->keybit, KEY_MAX))
 961                        continue;
 962
 963                if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX))
 964                        continue;
 965
 966                if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX))
 967                        continue;
 968
 969                if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX))
 970                        continue;
 971
 972                if (!bitmap_subset(id->ledbit, dev->ledbit, LED_MAX))
 973                        continue;
 974
 975                if (!bitmap_subset(id->sndbit, dev->sndbit, SND_MAX))
 976                        continue;
 977
 978                if (!bitmap_subset(id->ffbit, dev->ffbit, FF_MAX))
 979                        continue;
 980
 981                if (!bitmap_subset(id->swbit, dev->swbit, SW_MAX))
 982                        continue;
 983
 984                if (!handler->match || handler->match(handler, dev))
 985                        return id;
 986        }
 987
 988        return NULL;
 989}
 990
 991static int input_attach_handler(struct input_dev *dev, struct input_handler *handler)
 992{
 993        const struct input_device_id *id;
 994        int error;
 995
 996        id = input_match_device(handler, dev);
 997        if (!id)
 998                return -ENODEV;
 999
1000        error = handler->connect(handler, dev, id);
1001        if (error && error != -ENODEV)
1002                pr_err("failed to attach handler %s to device %s, error: %d\n",
1003                       handler->name, kobject_name(&dev->dev.kobj), error);
1004
1005        return error;
1006}
1007
1008#ifdef CONFIG_COMPAT
1009
1010static int input_bits_to_string(char *buf, int buf_size,
1011                                unsigned long bits, bool skip_empty)
1012{
1013        int len = 0;
1014
1015        if (INPUT_COMPAT_TEST) {
1016                u32 dword = bits >> 32;
1017                if (dword || !skip_empty)
1018                        len += snprintf(buf, buf_size, "%x ", dword);
1019
1020                dword = bits & 0xffffffffUL;
1021                if (dword || !skip_empty || len)
1022                        len += snprintf(buf + len, max(buf_size - len, 0),
1023                                        "%x", dword);
1024        } else {
1025                if (bits || !skip_empty)
1026                        len += snprintf(buf, buf_size, "%lx", bits);
1027        }
1028
1029        return len;
1030}
1031
1032#else /* !CONFIG_COMPAT */
1033
1034static int input_bits_to_string(char *buf, int buf_size,
1035                                unsigned long bits, bool skip_empty)
1036{
1037        return bits || !skip_empty ?
1038                snprintf(buf, buf_size, "%lx", bits) : 0;
1039}
1040
1041#endif
1042
1043#ifdef CONFIG_PROC_FS
1044
1045static struct proc_dir_entry *proc_bus_input_dir;
1046static DECLARE_WAIT_QUEUE_HEAD(input_devices_poll_wait);
1047static int input_devices_state;
1048
1049static inline void input_wakeup_procfs_readers(void)
1050{
1051        input_devices_state++;
1052        wake_up(&input_devices_poll_wait);
1053}
1054
1055static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
1056{
1057        poll_wait(file, &input_devices_poll_wait, wait);
1058        if (file->f_version != input_devices_state) {
1059                file->f_version = input_devices_state;
1060                return POLLIN | POLLRDNORM;
1061        }
1062
1063        return 0;
1064}
1065
1066union input_seq_state {
1067        struct {
1068                unsigned short pos;
1069                bool mutex_acquired;
1070        };
1071        void *p;
1072};
1073
1074static void *input_devices_seq_start(struct seq_file *seq, loff_t *pos)
1075{
1076        union input_seq_state *state = (union input_seq_state *)&seq->private;
1077        int error;
1078
1079        /* We need to fit into seq->private pointer */
1080        BUILD_BUG_ON(sizeof(union input_seq_state) != sizeof(seq->private));
1081
1082        error = mutex_lock_interruptible(&input_mutex);
1083        if (error) {
1084                state->mutex_acquired = false;
1085                return ERR_PTR(error);
1086        }
1087
1088        state->mutex_acquired = true;
1089
1090        return seq_list_start(&input_dev_list, *pos);
1091}
1092
1093static void *input_devices_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1094{
1095        return seq_list_next(v, &input_dev_list, pos);
1096}
1097
1098static void input_seq_stop(struct seq_file *seq, void *v)
1099{
1100        union input_seq_state *state = (union input_seq_state *)&seq->private;
1101
1102        if (state->mutex_acquired)
1103                mutex_unlock(&input_mutex);
1104}
1105
1106static void input_seq_print_bitmap(struct seq_file *seq, const char *name,
1107                                   unsigned long *bitmap, int max)
1108{
1109        int i;
1110        bool skip_empty = true;
1111        char buf[18];
1112
1113        seq_printf(seq, "B: %s=", name);
1114
1115        for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
1116                if (input_bits_to_string(buf, sizeof(buf),
1117                                         bitmap[i], skip_empty)) {
1118                        skip_empty = false;
1119                        seq_printf(seq, "%s%s", buf, i > 0 ? " " : "");
1120                }
1121        }
1122
1123        /*
1124         * If no output was produced print a single 0.
1125         */
1126        if (skip_empty)
1127                seq_puts(seq, "0");
1128
1129        seq_putc(seq, '\n');
1130}
1131
1132static int input_devices_seq_show(struct seq_file *seq, void *v)
1133{
1134        struct input_dev *dev = container_of(v, struct input_dev, node);
1135        const char *path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
1136        struct input_handle *handle;
1137
1138        seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n",
1139                   dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version);
1140
1141        seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : "");
1142        seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : "");
1143        seq_printf(seq, "S: Sysfs=%s\n", path ? path : "");
1144        seq_printf(seq, "U: Uniq=%s\n", dev->uniq ? dev->uniq : "");
1145        seq_printf(seq, "H: Handlers=");
1146
1147        list_for_each_entry(handle, &dev->h_list, d_node)
1148                seq_printf(seq, "%s ", handle->name);
1149        seq_putc(seq, '\n');
1150
1151        input_seq_print_bitmap(seq, "PROP", dev->propbit, INPUT_PROP_MAX);
1152
1153        input_seq_print_bitmap(seq, "EV", dev->evbit, EV_MAX);
1154        if (test_bit(EV_KEY, dev->evbit))
1155                input_seq_print_bitmap(seq, "KEY", dev->keybit, KEY_MAX);
1156        if (test_bit(EV_REL, dev->evbit))
1157                input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX);
1158        if (test_bit(EV_ABS, dev->evbit))
1159                input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX);
1160        if (test_bit(EV_MSC, dev->evbit))
1161                input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX);
1162        if (test_bit(EV_LED, dev->evbit))
1163                input_seq_print_bitmap(seq, "LED", dev->ledbit, LED_MAX);
1164        if (test_bit(EV_SND, dev->evbit))
1165                input_seq_print_bitmap(seq, "SND", dev->sndbit, SND_MAX);
1166        if (test_bit(EV_FF, dev->evbit))
1167                input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX);
1168        if (test_bit(EV_SW, dev->evbit))
1169                input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX);
1170
1171        seq_putc(seq, '\n');
1172
1173        kfree(path);
1174        return 0;
1175}
1176
1177static const struct seq_operations input_devices_seq_ops = {
1178        .start  = input_devices_seq_start,
1179        .next   = input_devices_seq_next,
1180        .stop   = input_seq_stop,
1181        .show   = input_devices_seq_show,
1182};
1183
1184static int input_proc_devices_open(struct inode *inode, struct file *file)
1185{
1186        return seq_open(file, &input_devices_seq_ops);
1187}
1188
1189static const struct file_operations input_devices_fileops = {
1190        .owner          = THIS_MODULE,
1191        .open           = input_proc_devices_open,
1192        .poll           = input_proc_devices_poll,
1193        .read           = seq_read,
1194        .llseek         = seq_lseek,
1195        .release        = seq_release,
1196};
1197
1198static void *input_handlers_seq_start(struct seq_file *seq, loff_t *pos)
1199{
1200        union input_seq_state *state = (union input_seq_state *)&seq->private;
1201        int error;
1202
1203        /* We need to fit into seq->private pointer */
1204        BUILD_BUG_ON(sizeof(union input_seq_state) != sizeof(seq->private));
1205
1206        error = mutex_lock_interruptible(&input_mutex);
1207        if (error) {
1208                state->mutex_acquired = false;
1209                return ERR_PTR(error);
1210        }
1211
1212        state->mutex_acquired = true;
1213        state->pos = *pos;
1214
1215        return seq_list_start(&input_handler_list, *pos);
1216}
1217
1218static void *input_handlers_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1219{
1220        union input_seq_state *state = (union input_seq_state *)&seq->private;
1221
1222        state->pos = *pos + 1;
1223        return seq_list_next(v, &input_handler_list, pos);
1224}
1225
1226static int input_handlers_seq_show(struct seq_file *seq, void *v)
1227{
1228        struct input_handler *handler = container_of(v, struct input_handler, node);
1229        union input_seq_state *state = (union input_seq_state *)&seq->private;
1230
1231        seq_printf(seq, "N: Number=%u Name=%s", state->pos, handler->name);
1232        if (handler->filter)
1233                seq_puts(seq, " (filter)");
1234        if (handler->legacy_minors)
1235                seq_printf(seq, " Minor=%d", handler->minor);
1236        seq_putc(seq, '\n');
1237
1238        return 0;
1239}
1240
1241static const struct seq_operations input_handlers_seq_ops = {
1242        .start  = input_handlers_seq_start,
1243        .next   = input_handlers_seq_next,
1244        .stop   = input_seq_stop,
1245        .show   = input_handlers_seq_show,
1246};
1247
1248static int input_proc_handlers_open(struct inode *inode, struct file *file)
1249{
1250        return seq_open(file, &input_handlers_seq_ops);
1251}
1252
1253static const struct file_operations input_handlers_fileops = {
1254        .owner          = THIS_MODULE,
1255        .open           = input_proc_handlers_open,
1256        .read           = seq_read,
1257        .llseek         = seq_lseek,
1258        .release        = seq_release,
1259};
1260
1261static int __init input_proc_init(void)
1262{
1263        struct proc_dir_entry *entry;
1264
1265        proc_bus_input_dir = proc_mkdir("bus/input", NULL);
1266        if (!proc_bus_input_dir)
1267                return -ENOMEM;
1268
1269        entry = proc_create("devices", 0, proc_bus_input_dir,
1270                            &input_devices_fileops);
1271        if (!entry)
1272                goto fail1;
1273
1274        entry = proc_create("handlers", 0, proc_bus_input_dir,
1275                            &input_handlers_fileops);
1276        if (!entry)
1277                goto fail2;
1278
1279        return 0;
1280
1281 fail2: remove_proc_entry("devices", proc_bus_input_dir);
1282 fail1: remove_proc_entry("bus/input", NULL);
1283        return -ENOMEM;
1284}
1285
1286static void input_proc_exit(void)
1287{
1288        remove_proc_entry("devices", proc_bus_input_dir);
1289        remove_proc_entry("handlers", proc_bus_input_dir);
1290        remove_proc_entry("bus/input", NULL);
1291}
1292
1293#else /* !CONFIG_PROC_FS */
1294static inline void input_wakeup_procfs_readers(void) { }
1295static inline int input_proc_init(void) { return 0; }
1296static inline void input_proc_exit(void) { }
1297#endif
1298
1299#define INPUT_DEV_STRING_ATTR_SHOW(name)                                \
1300static ssize_t input_dev_show_##name(struct device *dev,                \
1301                                     struct device_attribute *attr,     \
1302                                     char *buf)                         \
1303{                                                                       \
1304        struct input_dev *input_dev = to_input_dev(dev);                \
1305                                                                        \
1306        return scnprintf(buf, PAGE_SIZE, "%s\n",                        \
1307                         input_dev->name ? input_dev->name : "");       \
1308}                                                                       \
1309static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL)
1310
1311INPUT_DEV_STRING_ATTR_SHOW(name);
1312INPUT_DEV_STRING_ATTR_SHOW(phys);
1313INPUT_DEV_STRING_ATTR_SHOW(uniq);
1314
1315static int input_print_modalias_bits(char *buf, int size,
1316                                     char name, unsigned long *bm,
1317                                     unsigned int min_bit, unsigned int max_bit)
1318{
1319        int len = 0, i;
1320
1321        len += snprintf(buf, max(size, 0), "%c", name);
1322        for (i = min_bit; i < max_bit; i++)
1323                if (bm[BIT_WORD(i)] & BIT_MASK(i))
1324                        len += snprintf(buf + len, max(size - len, 0), "%X,", i);
1325        return len;
1326}
1327
1328static int input_print_modalias(char *buf, int size, struct input_dev *id,
1329                                int add_cr)
1330{
1331        int len;
1332
1333        len = snprintf(buf, max(size, 0),
1334                       "input:b%04Xv%04Xp%04Xe%04X-",
1335                       id->id.bustype, id->id.vendor,
1336                       id->id.product, id->id.version);
1337
1338        len += input_print_modalias_bits(buf + len, size - len,
1339                                'e', id->evbit, 0, EV_MAX);
1340        len += input_print_modalias_bits(buf + len, size - len,
1341                                'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
1342        len += input_print_modalias_bits(buf + len, size - len,
1343                                'r', id->relbit, 0, REL_MAX);
1344        len += input_print_modalias_bits(buf + len, size - len,
1345                                'a', id->absbit, 0, ABS_MAX);
1346        len += input_print_modalias_bits(buf + len, size - len,
1347                                'm', id->mscbit, 0, MSC_MAX);
1348        len += input_print_modalias_bits(buf + len, size - len,
1349                                'l', id->ledbit, 0, LED_MAX);
1350        len += input_print_modalias_bits(buf + len, size - len,
1351                                's', id->sndbit, 0, SND_MAX);
1352        len += input_print_modalias_bits(buf + len, size - len,
1353                                'f', id->ffbit, 0, FF_MAX);
1354        len += input_print_modalias_bits(buf + len, size - len,
1355                                'w', id->swbit, 0, SW_MAX);
1356
1357        if (add_cr)
1358                len += snprintf(buf + len, max(size - len, 0), "\n");
1359
1360        return len;
1361}
1362
1363static ssize_t input_dev_show_modalias(struct device *dev,
1364                                       struct device_attribute *attr,
1365                                       char *buf)
1366{
1367        struct input_dev *id = to_input_dev(dev);
1368        ssize_t len;
1369
1370        len = input_print_modalias(buf, PAGE_SIZE, id, 1);
1371
1372        return min_t(int, len, PAGE_SIZE);
1373}
1374static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL);
1375
1376static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1377                              int max, int add_cr);
1378
1379static ssize_t input_dev_show_properties(struct device *dev,
1380                                         struct device_attribute *attr,
1381                                         char *buf)
1382{
1383        struct input_dev *input_dev = to_input_dev(dev);
1384        int len = input_print_bitmap(buf, PAGE_SIZE, input_dev->propbit,
1385                                     INPUT_PROP_MAX, true);
1386        return min_t(int, len, PAGE_SIZE);
1387}
1388static DEVICE_ATTR(properties, S_IRUGO, input_dev_show_properties, NULL);
1389
1390static struct attribute *input_dev_attrs[] = {
1391        &dev_attr_name.attr,
1392        &dev_attr_phys.attr,
1393        &dev_attr_uniq.attr,
1394        &dev_attr_modalias.attr,
1395        &dev_attr_properties.attr,
1396        NULL
1397};
1398
1399static struct attribute_group input_dev_attr_group = {
1400        .attrs  = input_dev_attrs,
1401};
1402
1403#define INPUT_DEV_ID_ATTR(name)                                         \
1404static ssize_t input_dev_show_id_##name(struct device *dev,             \
1405                                        struct device_attribute *attr,  \
1406                                        char *buf)                      \
1407{                                                                       \
1408        struct input_dev *input_dev = to_input_dev(dev);                \
1409        return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name); \
1410}                                                                       \
1411static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL)
1412
1413INPUT_DEV_ID_ATTR(bustype);
1414INPUT_DEV_ID_ATTR(vendor);
1415INPUT_DEV_ID_ATTR(product);
1416INPUT_DEV_ID_ATTR(version);
1417
1418static struct attribute *input_dev_id_attrs[] = {
1419        &dev_attr_bustype.attr,
1420        &dev_attr_vendor.attr,
1421        &dev_attr_product.attr,
1422        &dev_attr_version.attr,
1423        NULL
1424};
1425
1426static struct attribute_group input_dev_id_attr_group = {
1427        .name   = "id",
1428        .attrs  = input_dev_id_attrs,
1429};
1430
1431static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
1432                              int max, int add_cr)
1433{
1434        int i;
1435        int len = 0;
1436        bool skip_empty = true;
1437
1438        for (i = BITS_TO_LONGS(max) - 1; i >= 0; i--) {
1439                len += input_bits_to_string(buf + len, max(buf_size - len, 0),
1440                                            bitmap[i], skip_empty);
1441                if (len) {
1442                        skip_empty = false;
1443                        if (i > 0)
1444                                len += snprintf(buf + len, max(buf_size - len, 0), " ");
1445                }
1446        }
1447
1448        /*
1449         * If no output was produced print a single 0.
1450         */
1451        if (len == 0)
1452                len = snprintf(buf, buf_size, "%d", 0);
1453
1454        if (add_cr)
1455                len += snprintf(buf + len, max(buf_size - len, 0), "\n");
1456
1457        return len;
1458}
1459
1460#define INPUT_DEV_CAP_ATTR(ev, bm)                                      \
1461static ssize_t input_dev_show_cap_##bm(struct device *dev,              \
1462                                       struct device_attribute *attr,   \
1463                                       char *buf)                       \
1464{                                                                       \
1465        struct input_dev *input_dev = to_input_dev(dev);                \
1466        int len = input_print_bitmap(buf, PAGE_SIZE,                    \
1467                                     input_dev->bm##bit, ev##_MAX,      \
1468                                     true);                             \
1469        return min_t(int, len, PAGE_SIZE);                              \
1470}                                                                       \
1471static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL)
1472
1473INPUT_DEV_CAP_ATTR(EV, ev);
1474INPUT_DEV_CAP_ATTR(KEY, key);
1475INPUT_DEV_CAP_ATTR(REL, rel);
1476INPUT_DEV_CAP_ATTR(ABS, abs);
1477INPUT_DEV_CAP_ATTR(MSC, msc);
1478INPUT_DEV_CAP_ATTR(LED, led);
1479INPUT_DEV_CAP_ATTR(SND, snd);
1480INPUT_DEV_CAP_ATTR(FF, ff);
1481INPUT_DEV_CAP_ATTR(SW, sw);
1482
1483static struct attribute *input_dev_caps_attrs[] = {
1484        &dev_attr_ev.attr,
1485        &dev_attr_key.attr,
1486        &dev_attr_rel.attr,
1487        &dev_attr_abs.attr,
1488        &dev_attr_msc.attr,
1489        &dev_attr_led.attr,
1490        &dev_attr_snd.attr,
1491        &dev_attr_ff.attr,
1492        &dev_attr_sw.attr,
1493        NULL
1494};
1495
1496static struct attribute_group input_dev_caps_attr_group = {
1497        .name   = "capabilities",
1498        .attrs  = input_dev_caps_attrs,
1499};
1500
1501static const struct attribute_group *input_dev_attr_groups[] = {
1502        &input_dev_attr_group,
1503        &input_dev_id_attr_group,
1504        &input_dev_caps_attr_group,
1505        NULL
1506};
1507
1508static void input_dev_release(struct device *device)
1509{
1510        struct input_dev *dev = to_input_dev(device);
1511
1512        input_ff_destroy(dev);
1513        input_mt_destroy_slots(dev);
1514        kfree(dev->absinfo);
1515        kfree(dev->vals);
1516        kfree(dev);
1517
1518        module_put(THIS_MODULE);
1519}
1520
1521/*
1522 * Input uevent interface - loading event handlers based on
1523 * device bitfields.
1524 */
1525static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
1526                                   const char *name, unsigned long *bitmap, int max)
1527{
1528        int len;
1529
1530        if (add_uevent_var(env, "%s", name))
1531                return -ENOMEM;
1532
1533        len = input_print_bitmap(&env->buf[env->buflen - 1],
1534                                 sizeof(env->buf) - env->buflen,
1535                                 bitmap, max, false);
1536        if (len >= (sizeof(env->buf) - env->buflen))
1537                return -ENOMEM;
1538
1539        env->buflen += len;
1540        return 0;
1541}
1542
1543static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
1544                                         struct input_dev *dev)
1545{
1546        int len;
1547
1548        if (add_uevent_var(env, "MODALIAS="))
1549                return -ENOMEM;
1550
1551        len = input_print_modalias(&env->buf[env->buflen - 1],
1552                                   sizeof(env->buf) - env->buflen,
1553                                   dev, 0);
1554        if (len >= (sizeof(env->buf) - env->buflen))
1555                return -ENOMEM;
1556
1557        env->buflen += len;
1558        return 0;
1559}
1560
1561#define INPUT_ADD_HOTPLUG_VAR(fmt, val...)                              \
1562        do {                                                            \
1563                int err = add_uevent_var(env, fmt, val);                \
1564                if (err)                                                \
1565                        return err;                                     \
1566        } while (0)
1567
1568#define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max)                         \
1569        do {                                                            \
1570                int err = input_add_uevent_bm_var(env, name, bm, max);  \
1571                if (err)                                                \
1572                        return err;                                     \
1573        } while (0)
1574
1575#define INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev)                             \
1576        do {                                                            \
1577                int err = input_add_uevent_modalias_var(env, dev);      \
1578                if (err)                                                \
1579                        return err;                                     \
1580        } while (0)
1581
1582static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
1583{
1584        struct input_dev *dev = to_input_dev(device);
1585
1586        INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x",
1587                                dev->id.bustype, dev->id.vendor,
1588                                dev->id.product, dev->id.version);
1589        if (dev->name)
1590                INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name);
1591        if (dev->phys)
1592                INPUT_ADD_HOTPLUG_VAR("PHYS=\"%s\"", dev->phys);
1593        if (dev->uniq)
1594                INPUT_ADD_HOTPLUG_VAR("UNIQ=\"%s\"", dev->uniq);
1595
1596        INPUT_ADD_HOTPLUG_BM_VAR("PROP=", dev->propbit, INPUT_PROP_MAX);
1597
1598        INPUT_ADD_HOTPLUG_BM_VAR("EV=", dev->evbit, EV_MAX);
1599        if (test_bit(EV_KEY, dev->evbit))
1600                INPUT_ADD_HOTPLUG_BM_VAR("KEY=", dev->keybit, KEY_MAX);
1601        if (test_bit(EV_REL, dev->evbit))
1602                INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX);
1603        if (test_bit(EV_ABS, dev->evbit))
1604                INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX);
1605        if (test_bit(EV_MSC, dev->evbit))
1606                INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX);
1607        if (test_bit(EV_LED, dev->evbit))
1608                INPUT_ADD_HOTPLUG_BM_VAR("LED=", dev->ledbit, LED_MAX);
1609        if (test_bit(EV_SND, dev->evbit))
1610                INPUT_ADD_HOTPLUG_BM_VAR("SND=", dev->sndbit, SND_MAX);
1611        if (test_bit(EV_FF, dev->evbit))
1612                INPUT_ADD_HOTPLUG_BM_VAR("FF=", dev->ffbit, FF_MAX);
1613        if (test_bit(EV_SW, dev->evbit))
1614                INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX);
1615
1616        INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev);
1617
1618        return 0;
1619}
1620
1621#define INPUT_DO_TOGGLE(dev, type, bits, on)                            \
1622        do {                                                            \
1623                int i;                                                  \
1624                bool active;                                            \
1625                                                                        \
1626                if (!test_bit(EV_##type, dev->evbit))                   \
1627                        break;                                          \
1628                                                                        \
1629                for (i = 0; i < type##_MAX; i++) {                      \
1630                        if (!test_bit(i, dev->bits##bit))               \
1631                                continue;                               \
1632                                                                        \
1633                        active = test_bit(i, dev->bits);                \
1634                        if (!active && !on)                             \
1635                                continue;                               \
1636                                                                        \
1637                        dev->event(dev, EV_##type, i, on ? active : 0); \
1638                }                                                       \
1639        } while (0)
1640
1641static void input_dev_toggle(struct input_dev *dev, bool activate)
1642{
1643        if (!dev->event)
1644                return;
1645
1646        INPUT_DO_TOGGLE(dev, LED, led, activate);
1647        INPUT_DO_TOGGLE(dev, SND, snd, activate);
1648
1649        if (activate && test_bit(EV_REP, dev->evbit)) {
1650                dev->event(dev, EV_REP, REP_PERIOD, dev->rep[REP_PERIOD]);
1651                dev->event(dev, EV_REP, REP_DELAY, dev->rep[REP_DELAY]);
1652        }
1653}
1654
1655/**
1656 * input_reset_device() - reset/restore the state of input device
1657 * @dev: input device whose state needs to be reset
1658 *
1659 * This function tries to reset the state of an opened input device and
1660 * bring internal state and state if the hardware in sync with each other.
1661 * We mark all keys as released, restore LED state, repeat rate, etc.
1662 */
1663void input_reset_device(struct input_dev *dev)
1664{
1665        unsigned long flags;
1666
1667        mutex_lock(&dev->mutex);
1668        spin_lock_irqsave(&dev->event_lock, flags);
1669
1670        input_dev_toggle(dev, true);
1671        input_dev_release_keys(dev);
1672
1673        spin_unlock_irqrestore(&dev->event_lock, flags);
1674        mutex_unlock(&dev->mutex);
1675}
1676EXPORT_SYMBOL(input_reset_device);
1677
1678#ifdef CONFIG_PM_SLEEP
1679static int input_dev_suspend(struct device *dev)
1680{
1681        struct input_dev *input_dev = to_input_dev(dev);
1682
1683        spin_lock_irq(&input_dev->event_lock);
1684
1685        /*
1686         * Keys that are pressed now are unlikely to be
1687         * still pressed when we resume.
1688         */
1689        input_dev_release_keys(input_dev);
1690
1691        /* Turn off LEDs and sounds, if any are active. */
1692        input_dev_toggle(input_dev, false);
1693
1694        spin_unlock_irq(&input_dev->event_lock);
1695
1696        return 0;
1697}
1698
1699static int input_dev_resume(struct device *dev)
1700{
1701        struct input_dev *input_dev = to_input_dev(dev);
1702
1703        spin_lock_irq(&input_dev->event_lock);
1704
1705        /* Restore state of LEDs and sounds, if any were active. */
1706        input_dev_toggle(input_dev, true);
1707
1708        spin_unlock_irq(&input_dev->event_lock);
1709
1710        return 0;
1711}
1712
1713static int input_dev_freeze(struct device *dev)
1714{
1715        struct input_dev *input_dev = to_input_dev(dev);
1716
1717        spin_lock_irq(&input_dev->event_lock);
1718
1719        /*
1720         * Keys that are pressed now are unlikely to be
1721         * still pressed when we resume.
1722         */
1723        input_dev_release_keys(input_dev);
1724
1725        spin_unlock_irq(&input_dev->event_lock);
1726
1727        return 0;
1728}
1729
1730static int input_dev_poweroff(struct device *dev)
1731{
1732        struct input_dev *input_dev = to_input_dev(dev);
1733
1734        spin_lock_irq(&input_dev->event_lock);
1735
1736        /* Turn off LEDs and sounds, if any are active. */
1737        input_dev_toggle(input_dev, false);
1738
1739        spin_unlock_irq(&input_dev->event_lock);
1740
1741        return 0;
1742}
1743
1744static const struct dev_pm_ops input_dev_pm_ops = {
1745        .suspend        = input_dev_suspend,
1746        .resume         = input_dev_resume,
1747        .freeze         = input_dev_freeze,
1748        .poweroff       = input_dev_poweroff,
1749        .restore        = input_dev_resume,
1750};
1751#endif /* CONFIG_PM */
1752
1753static struct device_type input_dev_type = {
1754        .groups         = input_dev_attr_groups,
1755        .release        = input_dev_release,
1756        .uevent         = input_dev_uevent,
1757#ifdef CONFIG_PM_SLEEP
1758        .pm             = &input_dev_pm_ops,
1759#endif
1760};
1761
1762static char *input_devnode(struct device *dev, umode_t *mode)
1763{
1764        return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
1765}
1766
1767struct class input_class = {
1768        .name           = "input",
1769        .devnode        = input_devnode,
1770};
1771EXPORT_SYMBOL_GPL(input_class);
1772
1773/**
1774 * input_allocate_device - allocate memory for new input device
1775 *
1776 * Returns prepared struct input_dev or %NULL.
1777 *
1778 * NOTE: Use input_free_device() to free devices that have not been
1779 * registered; input_unregister_device() should be used for already
1780 * registered devices.
1781 */
1782struct input_dev *input_allocate_device(void)
1783{
1784        static atomic_t input_no = ATOMIC_INIT(-1);
1785        struct input_dev *dev;
1786
1787        dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
1788        if (dev) {
1789                dev->dev.type = &input_dev_type;
1790                dev->dev.class = &input_class;
1791                device_initialize(&dev->dev);
1792                mutex_init(&dev->mutex);
1793                spin_lock_init(&dev->event_lock);
1794                init_timer(&dev->timer);
1795                INIT_LIST_HEAD(&dev->h_list);
1796                INIT_LIST_HEAD(&dev->node);
1797
1798                dev_set_name(&dev->dev, "input%lu",
1799                             (unsigned long)atomic_inc_return(&input_no));
1800
1801                __module_get(THIS_MODULE);
1802        }
1803
1804        return dev;
1805}
1806EXPORT_SYMBOL(input_allocate_device);
1807
1808struct input_devres {
1809        struct input_dev *input;
1810};
1811
1812static int devm_input_device_match(struct device *dev, void *res, void *data)
1813{
1814        struct input_devres *devres = res;
1815
1816        return devres->input == data;
1817}
1818
1819static void devm_input_device_release(struct device *dev, void *res)
1820{
1821        struct input_devres *devres = res;
1822        struct input_dev *input = devres->input;
1823
1824        dev_dbg(dev, "%s: dropping reference to %s\n",
1825                __func__, dev_name(&input->dev));
1826        input_put_device(input);
1827}
1828
1829/**
1830 * devm_input_allocate_device - allocate managed input device
1831 * @dev: device owning the input device being created
1832 *
1833 * Returns prepared struct input_dev or %NULL.
1834 *
1835 * Managed input devices do not need to be explicitly unregistered or
1836 * freed as it will be done automatically when owner device unbinds from
1837 * its driver (or binding fails). Once managed input device is allocated,
1838 * it is ready to be set up and registered in the same fashion as regular
1839 * input device. There are no special devm_input_device_[un]register()
1840 * variants, regular ones work with both managed and unmanaged devices,
1841 * should you need them. In most cases however, managed input device need
1842 * not be explicitly unregistered or freed.
1843 *
1844 * NOTE: the owner device is set up as parent of input device and users
1845 * should not override it.
1846 */
1847struct input_dev *devm_input_allocate_device(struct device *dev)
1848{
1849        struct input_dev *input;
1850        struct input_devres *devres;
1851
1852        devres = devres_alloc(devm_input_device_release,
1853                              sizeof(struct input_devres), GFP_KERNEL);
1854        if (!devres)
1855                return NULL;
1856
1857        input = input_allocate_device();
1858        if (!input) {
1859                devres_free(devres);
1860                return NULL;
1861        }
1862
1863        input->dev.parent = dev;
1864        input->devres_managed = true;
1865
1866        devres->input = input;
1867        devres_add(dev, devres);
1868
1869        return input;
1870}
1871EXPORT_SYMBOL(devm_input_allocate_device);
1872
1873/**
1874 * input_free_device - free memory occupied by input_dev structure
1875 * @dev: input device to free
1876 *
1877 * This function should only be used if input_register_device()
1878 * was not called yet or if it failed. Once device was registered
1879 * use input_unregister_device() and memory will be freed once last
1880 * reference to the device is dropped.
1881 *
1882 * Device should be allocated by input_allocate_device().
1883 *
1884 * NOTE: If there are references to the input device then memory
1885 * will not be freed until last reference is dropped.
1886 */
1887void input_free_device(struct input_dev *dev)
1888{
1889        if (dev) {
1890                if (dev->devres_managed)
1891                        WARN_ON(devres_destroy(dev->dev.parent,
1892                                                devm_input_device_release,
1893                                                devm_input_device_match,
1894                                                dev));
1895                input_put_device(dev);
1896        }
1897}
1898EXPORT_SYMBOL(input_free_device);
1899
1900/**
1901 * input_set_capability - mark device as capable of a certain event
1902 * @dev: device that is capable of emitting or accepting event
1903 * @type: type of the event (EV_KEY, EV_REL, etc...)
1904 * @code: event code
1905 *
1906 * In addition to setting up corresponding bit in appropriate capability
1907 * bitmap the function also adjusts dev->evbit.
1908 */
1909void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code)
1910{
1911        switch (type) {
1912        case EV_KEY:
1913                __set_bit(code, dev->keybit);
1914                break;
1915
1916        case EV_REL:
1917                __set_bit(code, dev->relbit);
1918                break;
1919
1920        case EV_ABS:
1921                input_alloc_absinfo(dev);
1922                if (!dev->absinfo)
1923                        return;
1924
1925                __set_bit(code, dev->absbit);
1926                break;
1927
1928        case EV_MSC:
1929                __set_bit(code, dev->mscbit);
1930                break;
1931
1932        case EV_SW:
1933                __set_bit(code, dev->swbit);
1934                break;
1935
1936        case EV_LED:
1937                __set_bit(code, dev->ledbit);
1938                break;
1939
1940        case EV_SND:
1941                __set_bit(code, dev->sndbit);
1942                break;
1943
1944        case EV_FF:
1945                __set_bit(code, dev->ffbit);
1946                break;
1947
1948        case EV_PWR:
1949                /* do nothing */
1950                break;
1951
1952        default:
1953                pr_err("input_set_capability: unknown type %u (code %u)\n",
1954                       type, code);
1955                dump_stack();
1956                return;
1957        }
1958
1959        __set_bit(type, dev->evbit);
1960}
1961EXPORT_SYMBOL(input_set_capability);
1962
1963static unsigned int input_estimate_events_per_packet(struct input_dev *dev)
1964{
1965        int mt_slots;
1966        int i;
1967        unsigned int events;
1968
1969        if (dev->mt) {
1970                mt_slots = dev->mt->num_slots;
1971        } else if (test_bit(ABS_MT_TRACKING_ID, dev->absbit)) {
1972                mt_slots = dev->absinfo[ABS_MT_TRACKING_ID].maximum -
1973                           dev->absinfo[ABS_MT_TRACKING_ID].minimum + 1,
1974                mt_slots = clamp(mt_slots, 2, 32);
1975        } else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) {
1976                mt_slots = 2;
1977        } else {
1978                mt_slots = 0;
1979        }
1980
1981        events = mt_slots + 1; /* count SYN_MT_REPORT and SYN_REPORT */
1982
1983        if (test_bit(EV_ABS, dev->evbit)) {
1984                for (i = 0; i < ABS_CNT; i++) {
1985                        if (test_bit(i, dev->absbit)) {
1986                                if (input_is_mt_axis(i))
1987                                        events += mt_slots;
1988                                else
1989                                        events++;
1990                        }
1991                }
1992        }
1993
1994        if (test_bit(EV_REL, dev->evbit)) {
1995                for (i = 0; i < REL_CNT; i++)
1996                        if (test_bit(i, dev->relbit))
1997                                events++;
1998        }
1999
2000        /* Make room for KEY and MSC events */
2001        events += 7;
2002
2003        return events;
2004}
2005
2006#define INPUT_CLEANSE_BITMASK(dev, type, bits)                          \
2007        do {                                                            \
2008                if (!test_bit(EV_##type, dev->evbit))                   \
2009                        memset(dev->bits##bit, 0,                       \
2010                                sizeof(dev->bits##bit));                \
2011        } while (0)
2012
2013static void input_cleanse_bitmasks(struct input_dev *dev)
2014{
2015        INPUT_CLEANSE_BITMASK(dev, KEY, key);
2016        INPUT_CLEANSE_BITMASK(dev, REL, rel);
2017        INPUT_CLEANSE_BITMASK(dev, ABS, abs);
2018        INPUT_CLEANSE_BITMASK(dev, MSC, msc);
2019        INPUT_CLEANSE_BITMASK(dev, LED, led);
2020        INPUT_CLEANSE_BITMASK(dev, SND, snd);
2021        INPUT_CLEANSE_BITMASK(dev, FF, ff);
2022        INPUT_CLEANSE_BITMASK(dev, SW, sw);
2023}
2024
2025static void __input_unregister_device(struct input_dev *dev)
2026{
2027        struct input_handle *handle, *next;
2028
2029        input_disconnect_device(dev);
2030
2031        mutex_lock(&input_mutex);
2032
2033        list_for_each_entry_safe(handle, next, &dev->h_list, d_node)
2034                handle->handler->disconnect(handle);
2035        WARN_ON(!list_empty(&dev->h_list));
2036
2037        del_timer_sync(&dev->timer);
2038        list_del_init(&dev->node);
2039
2040        input_wakeup_procfs_readers();
2041
2042        mutex_unlock(&input_mutex);
2043
2044        device_del(&dev->dev);
2045}
2046
2047static void devm_input_device_unregister(struct device *dev, void *res)
2048{
2049        struct input_devres *devres = res;
2050        struct input_dev *input = devres->input;
2051
2052        dev_dbg(dev, "%s: unregistering device %s\n",
2053                __func__, dev_name(&input->dev));
2054        __input_unregister_device(input);
2055}
2056
2057/**
2058 * input_register_device - register device with input core
2059 * @dev: device to be registered
2060 *
2061 * This function registers device with input core. The device must be
2062 * allocated with input_allocate_device() and all it's capabilities
2063 * set up before registering.
2064 * If function fails the device must be freed with input_free_device().
2065 * Once device has been successfully registered it can be unregistered
2066 * with input_unregister_device(); input_free_device() should not be
2067 * called in this case.
2068 *
2069 * Note that this function is also used to register managed input devices
2070 * (ones allocated with devm_input_allocate_device()). Such managed input
2071 * devices need not be explicitly unregistered or freed, their tear down
2072 * is controlled by the devres infrastructure. It is also worth noting
2073 * that tear down of managed input devices is internally a 2-step process:
2074 * registered managed input device is first unregistered, but stays in
2075 * memory and can still handle input_event() calls (although events will
2076 * not be delivered anywhere). The freeing of managed input device will
2077 * happen later, when devres stack is unwound to the point where device
2078 * allocation was made.
2079 */
2080int input_register_device(struct input_dev *dev)
2081{
2082        struct input_devres *devres = NULL;
2083        struct input_handler *handler;
2084        unsigned int packet_size;
2085        const char *path;
2086        int error;
2087
2088        if (dev->devres_managed) {
2089                devres = devres_alloc(devm_input_device_unregister,
2090                                      sizeof(struct input_devres), GFP_KERNEL);
2091                if (!devres)
2092                        return -ENOMEM;
2093
2094                devres->input = dev;
2095        }
2096
2097        /* Every input device generates EV_SYN/SYN_REPORT events. */
2098        __set_bit(EV_SYN, dev->evbit);
2099
2100        /* KEY_RESERVED is not supposed to be transmitted to userspace. */
2101        __clear_bit(KEY_RESERVED, dev->keybit);
2102
2103        /* Make sure that bitmasks not mentioned in dev->evbit are clean. */
2104        input_cleanse_bitmasks(dev);
2105
2106        packet_size = input_estimate_events_per_packet(dev);
2107        if (dev->hint_events_per_packet < packet_size)
2108                dev->hint_events_per_packet = packet_size;
2109
2110        dev->max_vals = dev->hint_events_per_packet + 2;
2111        dev->vals = kcalloc(dev->max_vals, sizeof(*dev->vals), GFP_KERNEL);
2112        if (!dev->vals) {
2113                error = -ENOMEM;
2114                goto err_devres_free;
2115        }
2116
2117        /*
2118         * If delay and period are pre-set by the driver, then autorepeating
2119         * is handled by the driver itself and we don't do it in input.c.
2120         */
2121        if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD]) {
2122                dev->timer.data = (long) dev;
2123                dev->timer.function = input_repeat_key;
2124                dev->rep[REP_DELAY] = 250;
2125                dev->rep[REP_PERIOD] = 33;
2126        }
2127
2128        if (!dev->getkeycode)
2129                dev->getkeycode = input_default_getkeycode;
2130
2131        if (!dev->setkeycode)
2132                dev->setkeycode = input_default_setkeycode;
2133
2134        error = device_add(&dev->dev);
2135        if (error)
2136                goto err_free_vals;
2137
2138        path = kobject_get_path(&dev->dev.kobj, GFP_KERNEL);
2139        pr_info("%s as %s\n",
2140                dev->name ? dev->name : "Unspecified device",
2141                path ? path : "N/A");
2142        kfree(path);
2143
2144        error = mutex_lock_interruptible(&input_mutex);
2145        if (error)
2146                goto err_device_del;
2147
2148        list_add_tail(&dev->node, &input_dev_list);
2149
2150        list_for_each_entry(handler, &input_handler_list, node)
2151                input_attach_handler(dev, handler);
2152
2153        input_wakeup_procfs_readers();
2154
2155        mutex_unlock(&input_mutex);
2156
2157        if (dev->devres_managed) {
2158                dev_dbg(dev->dev.parent, "%s: registering %s with devres.\n",
2159                        __func__, dev_name(&dev->dev));
2160                devres_add(dev->dev.parent, devres);
2161        }
2162        return 0;
2163
2164err_device_del:
2165        device_del(&dev->dev);
2166err_free_vals:
2167        kfree(dev->vals);
2168        dev->vals = NULL;
2169err_devres_free:
2170        devres_free(devres);
2171        return error;
2172}
2173EXPORT_SYMBOL(input_register_device);
2174
2175/**
2176 * input_unregister_device - unregister previously registered device
2177 * @dev: device to be unregistered
2178 *
2179 * This function unregisters an input device. Once device is unregistered
2180 * the caller should not try to access it as it may get freed at any moment.
2181 */
2182void input_unregister_device(struct input_dev *dev)
2183{
2184        if (dev->devres_managed) {
2185                WARN_ON(devres_destroy(dev->dev.parent,
2186                                        devm_input_device_unregister,
2187                                        devm_input_device_match,
2188                                        dev));
2189                __input_unregister_device(dev);
2190                /*
2191                 * We do not do input_put_device() here because it will be done
2192                 * when 2nd devres fires up.
2193                 */
2194        } else {
2195                __input_unregister_device(dev);
2196                input_put_device(dev);
2197        }
2198}
2199EXPORT_SYMBOL(input_unregister_device);
2200
2201/**
2202 * input_register_handler - register a new input handler
2203 * @handler: handler to be registered
2204 *
2205 * This function registers a new input handler (interface) for input
2206 * devices in the system and attaches it to all input devices that
2207 * are compatible with the handler.
2208 */
2209int input_register_handler(struct input_handler *handler)
2210{
2211        struct input_dev *dev;
2212        int error;
2213
2214        error = mutex_lock_interruptible(&input_mutex);
2215        if (error)
2216                return error;
2217
2218        INIT_LIST_HEAD(&handler->h_list);
2219
2220        list_add_tail(&handler->node, &input_handler_list);
2221
2222        list_for_each_entry(dev, &input_dev_list, node)
2223                input_attach_handler(dev, handler);
2224
2225        input_wakeup_procfs_readers();
2226
2227        mutex_unlock(&input_mutex);
2228        return 0;
2229}
2230EXPORT_SYMBOL(input_register_handler);
2231
2232/**
2233 * input_unregister_handler - unregisters an input handler
2234 * @handler: handler to be unregistered
2235 *
2236 * This function disconnects a handler from its input devices and
2237 * removes it from lists of known handlers.
2238 */
2239void input_unregister_handler(struct input_handler *handler)
2240{
2241        struct input_handle *handle, *next;
2242
2243        mutex_lock(&input_mutex);
2244
2245        list_for_each_entry_safe(handle, next, &handler->h_list, h_node)
2246                handler->disconnect(handle);
2247        WARN_ON(!list_empty(&handler->h_list));
2248
2249        list_del_init(&handler->node);
2250
2251        input_wakeup_procfs_readers();
2252
2253        mutex_unlock(&input_mutex);
2254}
2255EXPORT_SYMBOL(input_unregister_handler);
2256
2257/**
2258 * input_handler_for_each_handle - handle iterator
2259 * @handler: input handler to iterate
2260 * @data: data for the callback
2261 * @fn: function to be called for each handle
2262 *
2263 * Iterate over @bus's list of devices, and call @fn for each, passing
2264 * it @data and stop when @fn returns a non-zero value. The function is
2265 * using RCU to traverse the list and therefore may be usind in atonic
2266 * contexts. The @fn callback is invoked from RCU critical section and
2267 * thus must not sleep.
2268 */
2269int input_handler_for_each_handle(struct input_handler *handler, void *data,
2270                                  int (*fn)(struct input_handle *, void *))
2271{
2272        struct input_handle *handle;
2273        int retval = 0;
2274
2275        rcu_read_lock();
2276
2277        list_for_each_entry_rcu(handle, &handler->h_list, h_node) {
2278                retval = fn(handle, data);
2279                if (retval)
2280                        break;
2281        }
2282
2283        rcu_read_unlock();
2284
2285        return retval;
2286}
2287EXPORT_SYMBOL(input_handler_for_each_handle);
2288
2289/**
2290 * input_register_handle - register a new input handle
2291 * @handle: handle to register
2292 *
2293 * This function puts a new input handle onto device's
2294 * and handler's lists so that events can flow through
2295 * it once it is opened using input_open_device().
2296 *
2297 * This function is supposed to be called from handler's
2298 * connect() method.
2299 */
2300int input_register_handle(struct input_handle *handle)
2301{
2302        struct input_handler *handler = handle->handler;
2303        struct input_dev *dev = handle->dev;
2304        int error;
2305
2306        /*
2307         * We take dev->mutex here to prevent race with
2308         * input_release_device().
2309         */
2310        error = mutex_lock_interruptible(&dev->mutex);
2311        if (error)
2312                return error;
2313
2314        /*
2315         * Filters go to the head of the list, normal handlers
2316         * to the tail.
2317         */
2318        if (handler->filter)
2319                list_add_rcu(&handle->d_node, &dev->h_list);
2320        else
2321                list_add_tail_rcu(&handle->d_node, &dev->h_list);
2322
2323        mutex_unlock(&dev->mutex);
2324
2325        /*
2326         * Since we are supposed to be called from ->connect()
2327         * which is mutually exclusive with ->disconnect()
2328         * we can't be racing with input_unregister_handle()
2329         * and so separate lock is not needed here.
2330         */
2331        list_add_tail_rcu(&handle->h_node, &handler->h_list);
2332
2333        if (handler->start)
2334                handler->start(handle);
2335
2336        return 0;
2337}
2338EXPORT_SYMBOL(input_register_handle);
2339
2340/**
2341 * input_unregister_handle - unregister an input handle
2342 * @handle: handle to unregister
2343 *
2344 * This function removes input handle from device's
2345 * and handler's lists.
2346 *
2347 * This function is supposed to be called from handler's
2348 * disconnect() method.
2349 */
2350void input_unregister_handle(struct input_handle *handle)
2351{
2352        struct input_dev *dev = handle->dev;
2353
2354        list_del_rcu(&handle->h_node);
2355
2356        /*
2357         * Take dev->mutex to prevent race with input_release_device().
2358         */
2359        mutex_lock(&dev->mutex);
2360        list_del_rcu(&handle->d_node);
2361        mutex_unlock(&dev->mutex);
2362
2363        synchronize_rcu();
2364}
2365EXPORT_SYMBOL(input_unregister_handle);
2366
2367/**
2368 * input_get_new_minor - allocates a new input minor number
2369 * @legacy_base: beginning or the legacy range to be searched
2370 * @legacy_num: size of legacy range
2371 * @allow_dynamic: whether we can also take ID from the dynamic range
2372 *
2373 * This function allocates a new device minor for from input major namespace.
2374 * Caller can request legacy minor by specifying @legacy_base and @legacy_num
2375 * parameters and whether ID can be allocated from dynamic range if there are
2376 * no free IDs in legacy range.
2377 */
2378int input_get_new_minor(int legacy_base, unsigned int legacy_num,
2379                        bool allow_dynamic)
2380{
2381        /*
2382         * This function should be called from input handler's ->connect()
2383         * methods, which are serialized with input_mutex, so no additional
2384         * locking is needed here.
2385         */
2386        if (legacy_base >= 0) {
2387                int minor = ida_simple_get(&input_ida,
2388                                           legacy_base,
2389                                           legacy_base + legacy_num,
2390                                           GFP_KERNEL);
2391                if (minor >= 0 || !allow_dynamic)
2392                        return minor;
2393        }
2394
2395        return ida_simple_get(&input_ida,
2396                              INPUT_FIRST_DYNAMIC_DEV, INPUT_MAX_CHAR_DEVICES,
2397                              GFP_KERNEL);
2398}
2399EXPORT_SYMBOL(input_get_new_minor);
2400
2401/**
2402 * input_free_minor - release previously allocated minor
2403 * @minor: minor to be released
2404 *
2405 * This function releases previously allocated input minor so that it can be
2406 * reused later.
2407 */
2408void input_free_minor(unsigned int minor)
2409{
2410        ida_simple_remove(&input_ida, minor);
2411}
2412EXPORT_SYMBOL(input_free_minor);
2413
2414static int __init input_init(void)
2415{
2416        int err;
2417
2418        err = class_register(&input_class);
2419        if (err) {
2420                pr_err("unable to register input_dev class\n");
2421                return err;
2422        }
2423
2424        err = input_proc_init();
2425        if (err)
2426                goto fail1;
2427
2428        err = register_chrdev_region(MKDEV(INPUT_MAJOR, 0),
2429                                     INPUT_MAX_CHAR_DEVICES, "input");
2430        if (err) {
2431                pr_err("unable to register char major %d", INPUT_MAJOR);
2432                goto fail2;
2433        }
2434
2435        return 0;
2436
2437 fail2: input_proc_exit();
2438 fail1: class_unregister(&input_class);
2439        return err;
2440}
2441
2442static void __exit input_exit(void)
2443{
2444        input_proc_exit();
2445        unregister_chrdev_region(MKDEV(INPUT_MAJOR, 0),
2446                                 INPUT_MAX_CHAR_DEVICES);
2447        class_unregister(&input_class);
2448}
2449
2450subsys_initcall(input_init);
2451module_exit(input_exit);
2452