1. 22 5月, 2010 1 次提交
  2. 11 5月, 2010 1 次提交
    • R
      i2c: Fix bus-level power management callbacks · 2f60ba70
      Rafael J. Wysocki 提交于
      There are three issues with the i2c bus type's power management
      callbacks at the moment.  First, they don't include any hibernate
      callbacks, although they should at least include the .restore()
      callback (there's no guarantee that the driver will be present in
      memory before loading the image kernel and we must restore the
      pre-hibernation state of the device).  Second, the "legacy"
      callbacks are not going to be invoked by the PM core since the bus
      type's pm object is not NULL.  Finally, the system sleep PM
      (ie. suspend/resume) callbacks don't check if the device has been
      already suspended at run time, in which case they should skip
      suspending it.  Also, it looks like the i2c bus type can use the
      generic subsystem-level runtime PM callbacks.
      
      For these reasons, rework the system sleep PM callbacks provided by
      the i2c bus type to handle hibernation correctly and to invoke the
      "legacy" callbacks for drivers that provide them.  In addition to
      that make the i2c bus type use the generic subsystem-level runtime
      PM callbacks.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NJean Delvare <khali@linux-fr.org>
      2f60ba70
  3. 04 5月, 2010 3 次提交
  4. 29 4月, 2010 1 次提交
    • G
      i2c/of: Allow device node to be passed via i2c_board_info · d12d42f7
      Grant Likely 提交于
      The struct device_node *of_node pointer is moving out of dev->archdata
      and into the struct device proper.  of_i2c.c needs to set the of_node
      pointer before the device is registered.  Since the i2c subsystem
      doesn't allow 2 stage allocation and registration of i2c devices, the
      of_node pointer needs to be passed via the i2c_board_info structure
      so that it is set prior to registration.
      
      This patch adds of_node to struct i2c_board_info (conditional on
      CONFIG_OF), sets of_node in i2c_new_device(), and modifies of_i2c.c
      to use the new parameter.  The calling of dev_archdata_set_node()
      from of_i2c will be removed in a subsequent patch when of_node is
      removed from archdata and all users are converted over.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      d12d42f7
  5. 02 3月, 2010 2 次提交
  6. 17 1月, 2010 2 次提交
  7. 15 12月, 2009 3 次提交
  8. 07 12月, 2009 4 次提交
  9. 26 11月, 2009 1 次提交
    • J
      i2c: Fix userspace_device list corruption · bbd2d9c9
      Jean Delvare 提交于
      Fix userspace_device list corruption. The corruption was caused by
      clients not being removed when adapters with such clients were
      themselves removed. Something like the following would trigger it
      (assuming i2c-stub gets adapter number 3):
      
      # modprobe i2c-stub chip_addr=0x50
      # echo 24c08 0x50 > /sys/bus/i2c/devices/i2c-3/new_device 
      # rmmod i2c-stub
      # modprobe i2c-stub chip_addr=0x50
      # echo 24c08 0x50 > /sys/bus/i2c/devices/i2c-3/new_device 
      
      For the records, the stack trace in the kernel logs look like this:
      
      kernel: WARNING: at lib/list_debug.c:30 __list_add+0x8b/0x90()
      kernel: Hardware name: (...)
      kernel: list_add corruption. prev->next should be next (c137fc84), but was (null). (prev=f57111b8).
      kernel: Modules linked in: (...)
      kernel: Pid: 4669, comm: bash Not tainted 2.6.32-rc8 #259
      kernel: Call Trace:
      kernel:  [<c111eb8b>] ? __list_add+0x8b/0x90
      kernel:  [<c111eb8b>] ? __list_add+0x8b/0x90
      kernel:  [<c103265c>] warn_slowpath_common+0x6c/0xc0
      kernel:  [<c111eb8b>] ? __list_add+0x8b/0x90
      kernel:  [<c10326f6>] warn_slowpath_fmt+0x26/0x30
      kernel:  [<c111eb8b>] __list_add+0x8b/0x90
      kernel:  [<c11ba165>] i2c_sysfs_new_device+0x1c5/0x250
      kernel:  [<c10861be>] ? might_fault+0x2e/0x80
      kernel:  [<c11b9fa0>] ? i2c_sysfs_new_device+0x0/0x250
      kernel:  [<c118c625>] dev_attr_store+0x25/0x30
      kernel:  [<c10e305c>] sysfs_write_file+0x9c/0xf0
      kernel:  [<c109d35c>] vfs_write+0x9c/0x160
      kernel:  [<c10e2fc0>] ? sysfs_write_file+0x0/0xf0
      kernel:  [<c109d4dd>] sys_write+0x3d/0x70
      kernel:  [<c1002ed8>] sysenter_do_call+0x12/0x36
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      bbd2d9c9
  10. 19 9月, 2009 3 次提交
  11. 19 6月, 2009 9 次提交
  12. 16 6月, 2009 3 次提交
  13. 13 4月, 2009 1 次提交
  14. 29 3月, 2009 3 次提交
  15. 25 3月, 2009 1 次提交
    • M
      Driver core: implement uevent suppress in kobject · f67f129e
      Ming Lei 提交于
      This patch implements uevent suppress in kobject and removes it
      from struct device, based on the following ideas:
      
      1,Uevent sending should be one attribute of kobject, so suppressing it
      in kobject layer is more natural than in device layer. By this way,
      we can do it for other objects embedded with kobject.
      
      2,It may save several bytes for each instance of struct device.(On my
      omap3(32bit ARM) based box, can save 8bytes per device object)
      
      This patch also introduces dev_set|get_uevent_suppress() helpers to
      set and query uevent_suppress attribute in case to help kobject
      as private part of struct device in future.
      
      [This version is against the latest driver-core patch set of Greg,please
      ignore the last version.]
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f67f129e
  16. 25 2月, 2009 1 次提交
  17. 07 1月, 2009 1 次提交
    • K
      i2c: Replace bus_id with dev_name(), dev_set_name() · 27d9c183
      Kay Sievers 提交于
      This patch is part of a larger patch series which will remove
      the "char bus_id[20]" name string from struct device. The device
      name is managed in the kobject anyway, and without any size
      limitation, and just needlessly copied into "struct device".
      
      To set and read the device name dev_name(dev) and dev_set_name(dev)
      must be used. If your code uses static kobjects, which it shouldn't
      do, "const char *init_name" can be used to statically provide the
      name the registered device should have. At registration time, the
      init_name field is cleared, to enforce the use of dev_name(dev) to
      access the device name at a later time.
      
      We need to get rid of all occurrences of bus_id in the entire tree
      to be able to enable the new interface. Please apply this patch,
      and possibly convert any remaining remaining occurrences of bus_id.
      
      We want to submit a patch to -next, which will remove bus_id from
      "struct device", to find the remaining pieces to convert, and finally
      switch over to the new api, which will remove the 20 bytes array
      and does no longer have a size limitation.
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      27d9c183