Skip to content
  1. Aug 25, 2011
    • Rafael J. Wysocki's avatar
      PM / Domains: Rename argument of pm_genpd_add_subdomain() · bc0403ff
      Rafael J. Wysocki authored
      
      
      Change the name of the second argument of pm_genpd_add_subdomain()
      so that it is (a) shorter and (b) in agreement with the name of
      the second argument of pm_genpd_add_subdomain().
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      bc0403ff
    • Rafael J. Wysocki's avatar
      PM / Domains: Rename GPD_STATE_WAIT_PARENT to GPD_STATE_WAIT_MASTER · 17877eb5
      Rafael J. Wysocki authored
      
      
      Since it is now possible for a PM domain to have multiple masters
      instead of one parent, rename the "wait for parent" status to reflect
      the new situation.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      17877eb5
    • Rafael J. Wysocki's avatar
      PM / Domains: Allow generic PM domains to have multiple masters · 5063ce15
      Rafael J. Wysocki authored
      
      
      Currently, for a given generic PM domain there may be only one parent
      domain (i.e. a PM domain it depends on).  However, there is at least
      one real-life case in which there should be two parents (masters) for
      one PM domain (the A3RV domain on SH7372 turns out to depend on the
      A4LC domain and it depends on the A4R domain and the same time). For
      this reason, allow a PM domain to have multiple parents (masters) by
      introducing objects representing links between PM domains.
      
      The (logical) links between PM domains represent relationships in
      which one domain is a master (i.e. it is depended on) and another
      domain is a slave (i.e. it depends on the master) with the rule that
      the slave cannot be powered on if the master is not powered on and
      the master cannot be powered off if the slave is not powered off.
      Each struct generic_pm_domain object representing a PM domain has
      two lists of links, a list of links in which it is a master and
      a list of links in which it is a slave.  The first of these lists
      replaces the list of subdomains and the second one is used in place
      of the parent pointer.
      
      Each link is represented by struct gpd_link object containing
      pointers to the master and the slave and two struct list_head
      members allowing it to hook into two lists (the master's list
      of "master" links and the slave's list of "slave" links).  This
      allows the code to get to the link from each side (either from
      the master or from the slave) and follow it in each direction.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      5063ce15
    • Rafael J. Wysocki's avatar
      PM / Domains: Add "wait for parent" status for generic PM domains · 3f241775
      Rafael J. Wysocki authored
      
      
      The next patch will make it possible for a generic PM domain to have
      multiple parents (i.e. multiple PM domains it depends on).  To
      prepare for that change it is necessary to change pm_genpd_poweron()
      so that it doesn't jump to the start label after running itself
      recursively for the parent domain.  For this purpose, introduce a new
      PM domain status value GPD_STATE_WAIT_PARENT that will be set by
      pm_genpd_poweron() before calling itself recursively for the parent
      domain and modify the code in drivers/base/power/domain.c so that
      the GPD_STATE_WAIT_PARENT status is guaranteed to be preserved during
      the execution of pm_genpd_poweron() for the parent.
      
      This change also causes pm_genpd_add_subdomain() and
      pm_genpd_remove_subdomain() to wait for started pm_genpd_poweron() to
      complete and allows pm_genpd_runtime_resume() to avoid dropping the
      lock after powering on the PM domain.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      3f241775
    • Rafael J. Wysocki's avatar
      PM / Domains: Make pm_genpd_poweron() always survive parent removal · 9e08cf42
      Rafael J. Wysocki authored
      
      
      If pm_genpd_remove_subdomain() is called to remove a PM domain's
      subdomain and pm_genpd_poweron() is called for that subdomain at
      the same time, and the pm_genpd_poweron() called by it recursively
      for the parent returns an error, the first pm_genpd_poweron()'s
      error code path will attempt to decrement the subdomain counter of
      a PM domain that it's not a subdomain of any more.
      
      Rearrange the code in pm_genpd_poweron() to prevent this from
      happening.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      9e08cf42
    • Rafael J. Wysocki's avatar
      PM / Domains: Do not take parent locks to modify subdomain counters · 3c07cbc4
      Rafael J. Wysocki authored
      
      
      After the subdomain counter in struct generic_pm_domain has been
      changed into an atomic_t field, it is possible to modify
      pm_genpd_poweron() and pm_genpd_poweroff() so that they don't take
      the parents locks.  This requires pm_genpd_poweron() to increment
      the parent's subdomain counter before calling itself recursively
      for the parent and to decrement it if an error is to be returned.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      3c07cbc4
    • Rafael J. Wysocki's avatar
      PM / Domains: Implement subdomain counters as atomic fields · c4bb3160
      Rafael J. Wysocki authored
      
      
      Currently, pm_genpd_poweron() and pm_genpd_poweroff() need to take
      the parent PM domain's lock in order to modify the parent's counter
      of active subdomains in a nonracy way.  This causes the locking to be
      considerably complex and in fact is not necessary, because the
      subdomain counters may be implemented as atomic fields and they
      won't have to be modified under a lock.
      
      Replace the unsigned in sd_count field in struct generic_pm_domain
      by an atomic_t one and modify the code in drivers/base/power/domain.c
      to take this change into account.
      
      This patch doesn't change the locking yet, that is going to be done
      in a separate subsequent patch.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      c4bb3160
    • Kevin Hilman's avatar
      OMAP: omap_device: only override _noirq methods, not normal suspend/resume · ff35336d
      Kevin Hilman authored
      Commit c03f007a
      
       (OMAP: PM:
      omap_device: add system PM methods for PM domain handling) mistakenly
      used SET_SYSTEM_SLEEP_PM_OPS() when trying to configure custom methods
      for the PM domains noirq methods.  Fix that by setting only the
      suspend_noirq and resume_noirq methods with custom versions.
      
      Note that all other PM domain methods (including the "normal"
      suspend/resume methods) are populated using USE_PLATFORM_PM_SLEEP_OPS,
      which configures them all to the default subsystem (platform_bus)
      methods.
      
      Reported-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Tested-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      ff35336d
    • Rafael J. Wysocki's avatar
      PM / Runtime: Correct documentation of pm_runtime_irq_safe() · 64584eb9
      Rafael J. Wysocki authored
      The description of pm_runtime_irq_safe() has to be updated to follow
      the code after commit 02b26774
      
       (PM / Runtime: Allow _put_sync() from
      interrupts-disabled context).
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarKevin Hilman <khilman@ti.com>
      64584eb9
    • Magnus Damm's avatar
      ARM: mach-shmobile: sh7372 LCDC1 suspend fix · 5c3f96b2
      Magnus Damm authored
      Associate the HDMI clock together with LCDC1 on sh7372.
      
      Without this patch Suspend-to-RAM hangs on the boards
      AP4EVB and Mackerel. The code hangs in the LCDC driver
      where the software is waiting forever for the hardware to
      power down. By explicitly associating the HDMI clock with
      LCDC1 we can make sure the HDMI clock is enabled using
      Runtime PM whenever the driver is accessing the hardware.
      
      This HDMI and LCDC1 dependency is documented in the sh7372
      data sheet. Older kernels did work as expected but the
      recently merged (3.1-rc)
      
       794d78fe
      
       drivers: sh: late disabling of clocks V2
      
      introduced code to turn off clocks lacking software reference
      which happens to include the HDMI clock that is needed by
      LCDC1 to operate as expected.
      
      Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      5c3f96b2
    • Rafael J. Wysocki's avatar
      sh-sci / PM: Use power.irq_safe · 5a50a01b
      Rafael J. Wysocki authored
      
      
      Since sci_port_enable() and sci_port_disable() may be run with
      interrupts off and they execute pm_runtime_get_sync() and
      pm_runtime_put_sync(), respectively, the SCI device's
      power.irq_safe flag has to be set to indicate that it is safe
      to execute runtime PM callbacks for this device with interrupts off.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarMagnus Damm <damm@opensource.se>
      5a50a01b
    • Rafael J. Wysocki's avatar
      PM: Use spinlock instead of mutex in clock management functions · b7ab83ed
      Rafael J. Wysocki authored
      
      
      The lock member of struct pm_clk_data is of type struct mutex,
      which is a problem, because the suspend and resume routines
      defined in drivers/base/power/clock_ops.c cannot be executed
      with interrupts disabled for this reason.  Modify
      struct pm_clk_data so that its lock member is a spinlock.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarMagnus Damm <damm@opensource.se>
      b7ab83ed
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · a53e77fa
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: wiimote: Add status and return request handlers
        HID: wiimote: Add drm request
        HID: wiimote: Register led class devices
        HID: wiimote: Correctly call HID open/close callbacks
        HID: wiimote: Simplify synchronization
        HID: usbhid: Add support for SiGma Micro chip
        HID: add support for new revision of Apple aluminum keyboard
      a53e77fa
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 8554cc18
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: ad714x - read the interrupt status registers in a row
        Input: ad714x - use DMA-safe buffers for spi_write()
        Input: ad714x - fix endianness issues
        Input: ad714xx-spi - force SPI bus into the default 8-bit mode
        Input: ep93xx_keypad - add missing include of linux/module.h
        Input: tnetv107x-ts - add missing include of linux/module.h
        Input: max11801_ts - correct license statement
        Input: atmel_mxt_ts - report pressure information from the driver
        Input: bcm5974 - Add support for newer MacBookPro8,2
        Input: wacom - report id 3 returns 4 bytes of data
        Input: wacom - add WAC_MSG_RETRIES define
        Input: wacom - add support for the Wacom Bamboo Pen (CTL-660/K)
        Input: tegra-kbc - correct call to input_free_device
        Input: mpu3050 - correct call to input_free_device
        Input: bcm5974 - add support for touchpads found in MacBookAir4,2
        Input: mma8450 - fix module device table type
        Input: remove CLOCK_TICK_RATE from analog joystick driver
      8554cc18
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 051732bc
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message
        fuse: mark pages accessed when written to
        fuse: delete dead .write_begin and .write_end aops
        fuse: fix flock
        fuse: fix non-ANSI void function notation
      051732bc
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 2983573e
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc: Allow handling signals when stack is corrupted.
      2983573e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 2da2c664
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (29 commits)
        bridge: fix a possible net_device leak
        net: Documentation: RFC 2553bis is now RFC 3493
        atm: br2684: Fix oops due to skb->dev being NULL
        ipv6: Fix ipv6_getsockopt for IPV6_2292PKTOPTIONS
        net: netdev-features.txt update to Documentation/networking/00-INDEX
        vlan: reset headers on accel emulation path
        forcedeth: call vlan_mode only if hw supports vlans
        via-velocity: remove non-tagged packet filtering
        bonding:reset backup and inactive flag of slave
        net_sched: fix port mirror/redirect stats reporting
        sit tunnels: propagate IPv6 transport class to IPv4 Type of Service
        gianfar: reduce stack usage in gianfar_ethtool.c
        net: minor update to Documentation/networking/scaling.txt
        net: add missing entries to Documentation/networking/00-INDEX
        gianfar: prevent buggy hw rx vlan tagging
        net: sh_eth: Fix build by forgot including linux/interrupt.h
        drivers/net/can/sja1000/plx_pci.c: eliminate double free
        usbnet/cdc_ncm: Don't use stack variables for DMA
        vmxnet3: Don't enable vlan filters in promiscuous mode.
        iwlagn: sysfs couldn't find the priv pointer
        ...
      2da2c664
  2. Aug 24, 2011
  3. Aug 23, 2011