1. 03 7月, 2016 1 次提交
  2. 26 4月, 2016 3 次提交
  3. 24 4月, 2016 1 次提交
  4. 22 4月, 2016 1 次提交
  5. 26 2月, 2016 4 次提交
  6. 14 2月, 2016 4 次提交
  7. 25 2月, 2015 1 次提交
    • S
      iio: imu: inv_mpu6050: Create mux clients for ACPI · a35c5d1a
      Srinivas Pandruvada 提交于
      This is a follow up patches after adding i2c mux adapter for bypass
      mode. Potentially many different types of sensor can be attached to
      INVMPU6XXX device, which can be connected to main cpu i2c bus in
      bypass mode.
      Why do we need this?
      The system ACPI table entry will consist of only one device for
      INV6XXX, assuming that this driver will handle all connected sensors.
      That is not true for the Linux driver. There are bunch of IIO drivers
      for each sensors, hence we created a mux on this device. So to load
      these additional drivers, we need to create i2c devices for them
      in this driver using this mux adapter.
      
      There are multiple options:
      1. Use the auto detect feature, this needs a new i2c class for the
      adapter as the existing HWMON class is not acceptable. Also the
      autodetect has overhead of executing detect method for each
      matching class of adapters.
      This is a simple implementation. This option was previously submitted
      with not a happy feedback.
      
      2. Option is use ACPI magic and parse the configuration data. What
      we need to create a i2c device at a minimum is address and a name.
      Address can be obtained for secondary device in more or less in a
      standard way from using _CRS element. But there is no name. To get
      name we need to process proprietary vendor data. Not having name is
      not fun, as you have to create device using the device name of
      INVN6XXXX, respecting driver duplicate name space restriction.
      Also each client driver needs to have this name in the id table.
      Since multiple driver can be loaded, the driver should be able to
      detect its presence and gracefully exit for the other client driver
      to take it over.
      So we use two step process:
      - Use DMI to id platform and parse propritery data. This is not uncommon
      for many x86 platform specific driver. We will get both name and address.
      The change created necessary infrastructure to add more properitery vendor
      data parsing.
      - If DMI match fails, then create device on INV6XXX-client (we can't
      create with same name as INV6XXX as it will cause duplicate name and driver
      model will reject.) With this each client sensor driver which needs to get
      attached via INV6XXXX, need this name in the id table and detect the
      physical presence of sensor in probe and exit if not found.
      Signed-off-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      a35c5d1a
  8. 12 12月, 2014 1 次提交
  9. 29 3月, 2014 1 次提交
    • S
      iio: imu: inv_mpu6050: Add compatibity with MPU6500 · 6f174fd3
      Srinivas Pandruvada 提交于
      Adding MPU6500 in target list for this driver.
      
      Description:
      Source
      Document: MPU-6500 Register Map and Descriptions Revision 2.1
      Section 3: Register Map
      
      This section describes difference in terms device programmability
      between MPU6050 and MPU6500.
      These are different registers, which differs between MPU6050 and
      MPU6500.
      
      Addr	Name
      ---------------------
      1E 	LP_ACCEL_ODR
      6C	PWR_MGMT_2
      77	XA_OFFSET_H
      78	XA_OFFSET_L
      7A	YA_OFFSET_H
      7B	YA_OFFSET_L
      7D	ZA_OFFSET_H
      7E	ZA_OFFSET_L
      
      But the current MPU6050 driver doesn't use registers which are different
      except PWR_MGMT_2. The difference is support of "LP_WAKE_CTRL" at bit6-7
      in MPU6050 mode. In MPU6500 they are not defined.
      In current mpu6050 driver, only values used for this register are for
      standby mode for gyro and accelerometer.
      In both case frequency of wakeups is set to default and not using
      bit 6-7.
      
      So this driver van as well support MPU6500. In addition MPU6500 can
      run MPU6050 mode by changing device trim settings.
      
      So changing config comments to allow MPU6500 to use this driver.
      When the driver is enhanced to support more functions, i2c driver
      data INV_MPU6500 or "WHO_AM_I" register can be used to add additional
      functionality.
      Signed-off-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      6f174fd3
  10. 08 2月, 2014 1 次提交
  11. 11 2月, 2013 1 次提交