1. 09 1月, 2009 6 次提交
    • M
      471d8d49
    • D
      regulator: sysfs attribute reduction (v2) · 7ad68e2f
      David Brownell 提交于
      Clean up the sysfs interface to regulators by only exposing the
      attributes that can be properly displayed.  For example: when a
      particular regulator method is needed to display the value, only
      create that attribute when that method exists.
      
      This cleaned-up interface is much more comprehensible.  Most
      regulators only support a subset of the possible methods, so
      often more than half the attributes would be meaningless.  Many
      "not defined" values are no longer necessary.  (But handling
      of out-of-range values still looks a bit iffy.)
      
      Documentation is updated to reflect that few of the attributes
      are *always* present, and to briefly explain why a regulator may
      not have a given attribute.
      
      This adds object code, about a dozen bytes more than was removed
      by the preceding patch, but saves a bunch of per-regulator data
      associated with the now-removed attributes.  So there's a net
      reduction in memory footprint.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      7ad68e2f
    • D
      regulator: code shrink (v2) · 4fca9545
      David Brownell 提交于
      Shrink regulator core by removing duplication in attribute printing
      and probe() cleanup paths.  Saves about 340 bytes (object) on ARM.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      4fca9545
    • D
      regulator: improved mode error checks · e573520b
      David Brownell 提交于
      Minor bugfixes in handling of regulator modes:
      
       - have the routine verifying regulator modes check against
         the set of legal modes (!);
      
       - have regulator_set_optimum_mode() verify the return value
         of regulator_ops.get_optimum_mode(), like drms_uA_update();
      
       - one call to regulator_ops.set_mode() treated zero as a
         failure code; make this consistent with other callers.
      
      Both regulator_set_mode() and regulator_set_optimum_mode() now
      require valid_ops_mask to include REGULATOR_CHANGE_MODE; that
      seems like a bugfix too.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      e573520b
    • D
      regulator: enable/disable refcounting · 412aec61
      David Brownell 提交于
      Make the <linux/regulator.h> framework treat enable/disable call
      pairs like the <linux/clk.h> and <linux/interrupt.h> frameworks do:
      they're refcounted, so that different parts of a driver don't need
      to put work into coordination that frameworks normally handle.
      It's a minor object code shrink.
      
      It also makes the regulator_is_disabled() kerneldoc say what it's
      actually returning:  return value is not a refcount, and may report
      an error (e.g. I/O error from I2C).
      
      It also fixes some minor regulator_put() goofage:  removing unlocked
      access to the enable state.  (But still not making regulator put/get
      match the refcounting pattern they invoke.)
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      412aec61
    • K
      regulator: struct device - replace bus_id with dev_name(), dev_set_name() · 812460a9
      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.
      
      Thanks,
      Kay
      
      From: Kay Sievers <kay.sievers@vrfy.org>
      Subject: regulator: struct device - replace bus_id with dev_name(), dev_set_name()
      
      Cc: Liam Girdwood <lrg@slimlogic.co.uk>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-Off-By: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      812460a9
  2. 08 1月, 2009 34 次提交