23 Nov, 2011

7 commits

  • Keep track of current drm and add new debugfs file which reads or writes the
    current DRM.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • The wiimote provides direct access to parts of its eeprom. This implements read
    support for small chunks of the eeprom. This isn't very fast but prevents the
    reader from blocking the wiimote stream for too long.

    Write support is not yet supported as the wiimote breaks if we overwrite its
    memory. Use hidraw to reverse-engineer the eeprom before implementing write
    support here.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • Add initializer and deinitializer for debugfs support. This will later allow raw
    eeprom access and direct DRM modifications to debug wiimote behaviour and
    further protocol reverse-engineerings.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • All supported extensions report data as 6 byte block. All DRMs with extension
    data provide at least 6 extension bytes. Hence a generic handler for all
    extension bytes is sufficient and can be called on all DRMs.

    The handler distinguishes the input and passes it to the right handler. Motion+
    passes data interleaved so we can have Motion+ and a regular extension enabled
    simultaneously.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • The wiimote supports several extensions. This adds a separate source file which
    handles all extensions and can be disabled at compile-time.

    The driver reacts on "plug"-events on the extension port and starts a worker
    which initializes or deinitializes the extensions.

    Currently, the initialization logic is not fully understood and we can only
    detect and enable all extensions when all extensions are deactivated. Therefore,
    we need to disable all extensions, then detect and activate them again to react
    on "plug"-events.
    However, deactivating extensions will generate a new "plug"-event and we will
    never leave that loop. Hence, we only support extensions if they are plugged
    before the wiimote is connected (or before the ext-input device is opened). In
    the future we may support full extension hotplug support, but
    reverse-engineering this may take a while.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • Add helper functions similar to the write-mem helpers but for reading wiimote
    memory and eeprom.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann
     
  • Wiimote extension and sound support need access to several symbols so move them
    into a new header.

    Signed-off-by: David Herrmann
    Signed-off-by: Jiri Kosina

    David Herrmann