23 Dec, 2014

1 commit


20 Dec, 2014

2 commits

  • …ux-kernel/audio-display-linux-feature-tree into ti-linux-3.14.y

    TI-Feature: audio-display
    TI-Tree: git://git.ti.com/~darrene/ti-linux-kernel/audio-display-linux-feature-tree.git
    TI-Branch: audio-display-ti-linux-3.14.y

    * 'audio-display-ti-linux-3.14.y' of git://git.ti.com/~darrene/ti-linux-kernel/audio-display-linux-feature-tree:
    ASoC: tlv320aic31xx: Do not ignore errors in aic31xx_device_init()
    video/logo: prevent use of logos after they have been freed
    drm/omap: fix race conditon in DMM
    drm/omap: fix race condition with dev->obj_list

    Signed-off-by: Dan Murphy <DMurphy@ti.com>

    Dan Murphy
     
  • …-linux-feature-tree into ti-linux-3.14.y

    TI-Feature: power_management_base
    TI-Tree: git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree.git
    TI-Branch: pm-ti-linux-3.14.y

    * 'pm-ti-linux-3.14.y' of git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree:
    ARM: OMAP2: pm33xx: Bump firmware version requirement to 0x190
    remoteproc: wkup_m3_rproc: Modify wkup_m3_ping to not use interrupts
    remoteproc: wkup_m3: Defer probe until wkup_m3_pm_ops are populated
    ARM: OMAP2+: pm33xx: Only pass i2c volt scale offsets for DeepSleep
    ARM: dts: AM4372: Add ti,mbox-send-noirq to wkup_m3 mailbox
    ARM: dts: AM33XX: Add ti,mbox-send-noirq to wkup_m3 mailbox
    mailbox/omap: Add ti,mbox-send-noirq quirk to fix AM33xx CPU Idle

    Signed-off-by: Dan Murphy <DMurphy@ti.com>

    Dan Murphy
     

19 Dec, 2014

7 commits

  • Bump PM firmware minimum version requirement to 0x190 to fix AM335x
    cpuidle that uses the CM3 for MPU clock gating.

    Signed-off-by: Dave Gerlach

    Dave Gerlach
     
  • …rnel/platform-linux-feature-tree into ti-linux-3.14.y

    TI-Feature: platform_base
    TI-Tree: git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree.git
    TI-Branch: platform-ti-linux-3.14.y

    * 'platform-ti-linux-3.14.y' of git://git.ti.com/~rrnayak/ti-linux-kernel/platform-linux-feature-tree:
    ARM: OMAP2+: hwmod: Fix _wait_target_ready() for hwmods without sysc

    Signed-off-by: Texas Instruments Auto Merger <lcpd_integration@list.ti.com>

    Texas Instruments Auto Merger
     
  • [ Upstream commit a72d2abbe5752f3a773c4d8b7b41ae41f617f772 ]

    We need to return the error codes from aic31xx_device_init() and return
    from the i2c_probe with the error code.
    We will have kernel panic (NULL pointer dereference) in
    regulator_register_notifier() in case the devm_regulator_bulk_get() fails
    (with -EPROBE_DEFER for example).

    Signed-off-by: Peter Ujfalusi
    Signed-off-by: Mark Brown
    Cc: stable@vger.kernel.org

    Conflicts:

    sound/soc/codecs/tlv320aic31xx.c

    Signed-off-by: Jyri Sarha

    Peter Ujfalusi
     
  • There are quite a few hwmods that don't have sysconfig register and so
    _find_mpu_rt_port(oh) will return NULL thus preventing ready state check
    on those modules after the module is enabled.

    This can potentially cause a bus access error if the module is accessed
    before the module is ready.

    Get rid of the redundant _find_mpu_rt_port() check from the _wait_target_ready()
    funcion for all the SoCs. The following PRCM register access that checks the
    module ready state has nothing to do with module's SYSCONFIG or mpu_rt_port.

    e.g. this fixes the below DCAN bus access error on AM437x-gp-evm.

    [ 16.672978] ------------[ cut here ]------------
    [ 16.677885] WARNING: CPU: 0 PID: 1580 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x234/0x35c()
    [ 16.687946] 44000000.ocp:L3 Custom Error: MASTER M2 (64-bit) TARGET L4_PER_0 (Read): Data Access in User mode during Functional access
    [ 16.700654] Modules linked in: xhci_hcd btwilink ti_vpfe dwc3 videobuf2_core ov2659 bluetooth v4l2_common videodev ti_am335x_adc kfifo_buf industrialio c_can_platform videobuf2_dma_contig media snd_soc_tlv320aic3x pixcir_i2c_ts c_can dc
    [ 16.731144] CPU: 0 PID: 1580 Comm: rpc.statd Not tainted 3.14.26-02561-gf733aa036398 #180
    [ 16.739747] Backtrace:
    [ 16.742336] [] (dump_backtrace) from [] (show_stack+0x18/0x1c)
    [ 16.750285] r6:00000093 r5:00000009 r4:eab5b8a8 r3:00000000
    [ 16.756252] [] (show_stack) from [] (dump_stack+0x20/0x28)
    [ 16.763870] [] (dump_stack) from [] (warn_slowpath_common+0x6c/0x8c)
    [ 16.772408] [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x38/0x40)
    [ 16.781550] r8:c05d1f90 r7:c0730844 r6:c0730448 r5:80080003 r4:ed0cd210
    [ 16.788626] [] (warn_slowpath_fmt) from [] (l3_interrupt_handler+0x234/0x35c)
    [ 16.797968] r3:ed0cd480 r2:c0730508
    [ 16.801747] [] (l3_interrupt_handler) from [] (handle_irq_event_percpu+0x54/0x1bc)
    [ 16.811533] r10:ed005600 r9:c084855b r8:0000002a r7:00000000 r6:00000000 r5:0000002a
    [ 16.819780] r4:ed0e6d80
    [ 16.822453] [] (handle_irq_event_percpu) from [] (handle_irq_event+0x30/0x40)
    [ 16.831789] r10:eb2b6938 r9:eb2b6960 r8:bf011420 r7:fa240100 r6:00000000 r5:0000002a
    [ 16.840052] r4:ed005600
    [ 16.842744] [] (handle_irq_event) from [] (handle_fasteoi_irq+0x74/0x128)
    [ 16.851702] r4:ed005600 r3:00000000
    [ 16.855479] [] (handle_fasteoi_irq) from [] (generic_handle_irq+0x28/0x38)
    [ 16.864523] r4:0000002a r3:c0066164
    [ 16.868294] [] (generic_handle_irq) from [] (handle_IRQ+0x38/0x8c)
    [ 16.876612] r4:c081c640 r3:00000202
    [ 16.880380] [] (handle_IRQ) from [] (gic_handle_irq+0x30/0x5c)
    [ 16.888328] r6:eab5ba38 r5:c0804460 r4:fa24010c r3:00000100
    [ 16.894303] [] (gic_handle_irq) from [] (__irq_svc+0x40/0x50)
    [ 16.902193] Exception stack(0xeab5ba38 to 0xeab5ba80)
    [ 16.907499] ba20: 00000000 00000006
    [ 16.916108] ba40: fa1d0000 fa1d0008 ed3d3000 eab5bab4 ed3d3460 c0842af4 bf011420 eb2b6960
    [ 16.924716] ba60: eb2b6938 eab5ba8c eab5ba90 eab5ba80 bf035220 bf07702c 600f0013 ffffffff
    [ 16.933317] r7:eab5ba6c r6:ffffffff r5:600f0013 r4:bf07702c
    [ 16.939317] [] (c_can_plat_read_reg_aligned_to_16bit [c_can_platform]) from [] (c_can_get_berr_counter+0x38/0x64 [c_can])
    [ 16.952696] [] (c_can_get_berr_counter [c_can]) from [] (can_fill_info+0x124/0x15c [can_dev])
    [ 16.963480] r5:ec8c9740 r4:ed3d3000
    [ 16.967253] [] (can_fill_info [can_dev]) from [] (rtnl_fill_ifinfo+0x58c/0x8fc)
    [ 16.976749] r6:ec8c9740 r5:ed3d3000 r4:eb2b6780
    [ 16.981613] [] (rtnl_fill_ifinfo) from [] (rtnl_dump_ifinfo+0xf0/0x1dc)
    [ 16.990401] r10:ec8c9740 r9:00000000 r8:00000000 r7:00000000 r6:ebd4d1b4 r5:ed3d3000
    [ 16.998671] r4:00000000
    [ 17.001342] [] (rtnl_dump_ifinfo) from [] (netlink_dump+0xa8/0x1e0)
    [ 17.009772] r10:00000000 r9:00000000 r8:c0503318 r7:ebf3e6c0 r6:ebd4d1b4 r5:ec8c9740
    [ 17.018050] r4:ebd4d000
    [ 17.020714] [] (netlink_dump) from [] (__netlink_dump_start+0x104/0x154)
    [ 17.029591] r6:eab5bd34 r5:ec8c9980 r4:ebd4d000
    [ 17.034454] [] (__netlink_dump_start) from [] (rtnetlink_rcv_msg+0x110/0x1f4)
    [ 17.043778] r7:00000000 r6:ec8c9980 r5:00000f40 r4:ebf3e6c0
    [ 17.049743] [] (rtnetlink_rcv_msg) from [] (netlink_rcv_skb+0xb4/0xc8)
    [ 17.058449] r8:eab5bdac r7:ec8c9980 r6:c05054f4 r5:ec8c9980 r4:ebf3e6c0
    [ 17.065534] [] (netlink_rcv_skb) from [] (rtnetlink_rcv+0x24/0x2c)
    [ 17.073854] r6:ebd4d000 r5:00000014 r4:ec8c9980 r3:c0504110
    [ 17.079846] [] (rtnetlink_rcv) from [] (netlink_unicast+0x180/0x1ec)
    [ 17.088363] r4:ed0c6800 r3:c0504110
    [ 17.092113] [] (netlink_unicast) from [] (netlink_sendmsg+0x2ac/0x380)
    [ 17.100813] r10:00000000 r8:00000008 r7:ec8c9980 r6:ebd4d000 r5:eab5be70 r4:eab5bee4
    [ 17.109083] [] (netlink_sendmsg) from [] (sock_sendmsg+0x90/0xb0)
    [ 17.117305] r10:00000000 r9:eab5a000 r8:becdda3c r7:0000000c r6:ea978400 r5:eab5be70
    [ 17.125563] r4:c05103c4
    [ 17.128225] [] (sock_sendmsg) from [] (SyS_sendto+0xb8/0xdc)
    [ 17.136001] r6:becdda5c r5:00000014 r4:ecd37040
    [ 17.140876] [] (SyS_sendto) from [] (ret_fast_syscall+0x0/0x30)
    [ 17.148923] r10:00000000 r8:c000e804 r7:00000122 r6:becdda5c r5:0000000c r4:becdda5c
    [ 17.157169] ---[ end trace 2b71e15b38f58bad ]---

    Signed-off-by: Roger Quadros

    Roger Quadros
     
  • If the probe of an fb driver has been deferred due to missing
    dependencies, and the probe is later ran when a module is loaded, the
    fbdev framework will try to find a logo to use.

    However, the logos are __initdata, and have already been freed. This
    causes sometimes page faults, if the logo memory is not mapped,
    sometimes other random crashes as the logo data is invalid, and
    sometimes nothing, if the fbdev decides to reject the logo (e.g. the
    random value depicting the logo's height is too big).

    This patch adds a late_initcall function to mark the logos as freed. In
    reality the logos are freed later, and fbdev probe may be ran between
    this late_initcall and the freeing of the logos. In that case we will
    miss drawing the logo, even if it would be possible.

    Signed-off-by: Tomi Valkeinen
    Signed-off-by: Jyri Sarha

    Tomi Valkeinen
     
  • The omapdrm DMM code sometimes crashes with:

    WARNING: CPU: 0 PID: 1235 at lib/list_debug.c:36 __list_add+0x8c/0xbc()
    list_add double add: new=e9265368, prev=e90139c4, next=e9265368.

    This is caused by the code calling release_engine() twice for the same
    engine.

    dmm_txn_commit(wait=true) call is supposed to wait until the DMM
    transaction has been finished. And it does that, but it does not wait
    for the irq handler to finish.

    What happens is that the irq handler is triggered, and it either wakes
    up the thread that called dmm_txn_commit(), or that thread never even
    slept because the transaction was finished in the HW very quickly. That
    thread then continues executing, even if the irq handler is not yet
    finished, and a new transaction may be initiated. If that transaction is
    async (i.e. wait=false), a 'async' flag is set to true. The original irq
    handler, which has yet not finished, then sees the transaction as
    'async', even if it was supposed to be 'sync'.

    When that happens, the irq handler does an extra release_engine() call
    because it thinks it need to release the engine, leading to the crash.

    This patch fixes the issue by using completion to ensure that the irq
    handler has finished before a dmm_txn_commit(wait=true) may continue.

    Signed-off-by: Tomi Valkeinen
    Signed-off-by: Jyri Sarha

    Tomi Valkeinen
     
  • omap_gem_objects are added to dev->obj_list in omap_gem_new, and removed
    in omap_gem_free_object. Unfortunately there's no locking for
    dev->obj_list, which eventually leads to a crash:

    WARNING: CPU: 1 PID: 1123 at lib/list_debug.c:59 __list_del_entry+0xa4/0xe0()
    list_del corruption. prev->next should be e9281344, but was ea722b84

    Add a spinlock to protect dev->obj_list.

    Signed-off-by: Tomi Valkeinen
    Signed-off-by: Jyri Sarha

    Tomi Valkeinen
     

17 Dec, 2014

8 commits

  • The wkup_m3 needs the ability to receive messages in noirq context
    during cpuidle transition. Change wkup_m3_ping to not use any mailbox
    interrupts during ping now that the mailbox driver can handle sending
    the message in noirq context.

    Signed-off-by: Dave Gerlach

    Dave Gerlach
     
  • Defer probe till remowkup_m3_pm_ops are populated. This is to ensure
    that wkup_m3 is probed after the wkup_m3_pm_ops are populated by the
    mach-omap2 init call. This ensures clean initialization of m3.

    Signed-off-by: Keerthy
    Acked-by: Dave Gerlach

    J, KEERTHY
     
  • The offsets for i2c voltage scaling sequence were being set directly
    into IPC register 5 and being passed for all PM operations. This is
    incorrect as only DeepSleep0 should scale voltage, not standby or
    cpuidle. Instead we should store the value when it is calculated
    and only pass for DeepSleep operation, not cpuidle operation.

    Signed-off-by: Dave Gerlach

    Dave Gerlach
     
  • Add ti,mbox-send-noirq to wkup_m3 mailbox so that messages using
    wkup_m3 mailbox are sent without triggering any further interrupts.
    This is required to be able to send multiple messages to the WkupM3
    after the mailbox usage logic adjustment in the wkup_m3_ipc driver.

    Signed-off-by: Keerthy
    Acked-by: Dave Gerlach
    [s-anna@ti.com: revise commit description]
    Signed-off-by: Suman Anna

    Keerthy
     
  • Add ti,mbox-send-noirq to wkup_m3 mailbox so that messages using
    wkup_m3 mailbox are sent without triggering any further interrupts.
    This is needed to achieve lower power numbers during CPU idle on
    AM33xx.

    Tested-by: Keerthy
    Signed-off-by: Dave Gerlach
    [s-anna@ti.com: revise commit description]
    Signed-off-by: Suman Anna

    Dave Gerlach
     
  • The mailbox framework controls the transmission queue and requires
    either its controller implementations or clients to run the state
    machine for the Tx queue. The OMAP mailbox controller uses a Tx-ready
    interrupt as the equivalent of a Tx-done interrupt to run this Tx
    queue state-machine.

    The WkupM3 processor on AM33xx and AM43xx SoCs is used to offload
    certain PM tasks, like doing the necessary operations for Device
    PM suspend/resume or for entering lower c-states during cpuidle.

    The CPUIdle on AM33xx requires the messages to be sent without
    having to trigger the Tx-ready interrupts, as the interrupt
    would immediately terminate the CPUIdle operation. Support for
    this has been added by introducing a DT quirk, "ti,mbox-send-noirq"
    and using it to modify the normal OMAP mailbox controller behavior
    on the sub-mailboxes used to communicate with the WkupM3 remote
    processor. This also requires the wkup_m3_ipc driver to adjust
    its mailbox usage logic to run the Tx state machine.

    NOTE:
    - AM43xx does not communicate with WkupM3 for CPU Idle, so is
    not affected by this behavior. But, it uses the same IPC driver
    for PM suspend/resume functionality, so requires the quirk as
    well, because of changes to the common wkup_m3_ipc driver.

    Signed-off-by: Dave Gerlach
    [s-anna@ti.com: revise logic and update comments/patch description]
    Signed-off-by: Suman Anna

    Dave Gerlach
     
  • Pull in the updated remoteproc feature branch that includes the
    updates to the OMAP mailbox driver required for AM33xx/AM43xx
    PM fixes.

    * 'rproc-linux-3.14.y' of git://git.ti.com/rpmsg/remoteproc:
    ARM: dts: AM4372: Add ti,mbox-send-noirq to wkup_m3 mailbox
    ARM: dts: AM33XX: Add ti,mbox-send-noirq to wkup_m3 mailbox
    mailbox/omap: Add ti,mbox-send-noirq quirk to fix AM33xx CPU Idle

    Signed-off-by: Suman Anna

    Suman Anna
     
  • Pull in the updated mailbox feature branch into the remoteproc
    tree, this adds a mailbox quirk to fix AM33xx CPU Idle and the
    associated updates for the mailbox communication to work with
    the WkupM3 remote processor on AM33xx/AM43xx SoCs.

    * 'mailbox-linux-3.14.y' of git://git.ti.com/rpmsg/mailbox:
    ARM: dts: AM4372: Add ti,mbox-send-noirq to wkup_m3 mailbox
    ARM: dts: AM33XX: Add ti,mbox-send-noirq to wkup_m3 mailbox
    mailbox/omap: Add ti,mbox-send-noirq quirk to fix AM33xx CPU Idle

    Signed-off-by: Suman Anna

    Suman Anna
     

16 Dec, 2014

22 commits