19 Jul, 2013

2 commits

  • This patch is copied from commit 25b7679136fd85b1e5197e36a0ca126163e89590
    Just unable to cherry-pick due to different file names.

    The ASoC core tries to not enforce symmetric rates when
    two streams open simultaneously. It does so by checking
    rtd->rate being zero. This works exactly once after booting
    because it is not set to zero again when the streams close.
    Fix this by setting rtd->rate when no active stream is left.

    [This leads to lots of warnings about not enforcing the symmetry in some
    situations as there's a race in the userspace API where we know we've
    got two applications but don't know what rates they want to set.
    -- broonie ]

    Signed-off-by: Sascha Hauer
    Signed-off-by: Mark Brown
    Signed-off-by: Nicolin Chen

    Nicolin Chen
     
  • In probe(), we set LEFT_ADC_VOLUME but failed to set RIGHT_ADC_VOLUME due to
    typo during coding, thus fix it.

    Acked-by: Wang Shengjiu
    Signed-off-by: Nicolin Chen
    (cherry picked from commit ae3eb591ed9f61579a4217c6ddfd19d32e8f3cc5)

    Nicolin Chen
     

11 Jul, 2013

1 commit


04 Jun, 2013

1 commit


10 Apr, 2013

4 commits


02 Apr, 2013

4 commits


01 Apr, 2013

2 commits


22 Mar, 2013

1 commit

  • HDMI-audio depends on HDMI-video. If users want to use HDMI-audio function,
    they need to load HDMI-video first. Sometime users would forget to put video
    info into U-boot cmdline, "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24" for
    example. That might cause HDMI-auido driver fail to detect HDMI-video.
    Previously, if this happened to system, driver only returned with "ENOMEM"
    and system would print "Can't allocate memory". This might confuse users due
    to the vague infomation. Users would be hard to figure out the root cause.
    So this patch just add some error message to give users a clear indication,
    and changed the "ENOMEM" error number to the more precise "ENODEV".

    Acked-by: Wang Shengjiu
    Signed-off-by: Nicolin Chen

    Nicolin Chen
     

21 Mar, 2013

1 commit


12 Mar, 2013

1 commit

  • spdif driver registered kcontrol for ALSA subsystem controlling, while some
    of those kcontrol functions lack of clk_enable() before register-accessing. So
    system would definitely hang when those functions're called, which did happen
    during reboot test on Ubuntu due to its pulse-audio.
    This patch added paired clk_en/disable() to those functions so as to pevent
    system hang issue.

    Acked-by: Wang Shengjiu
    Tested-by: Anson Huang
    Signed-off-by: Nicolin Chen

    Nicolin Chen
     

08 Mar, 2013

2 commits


05 Jan, 2013

2 commits


19 Dec, 2012

1 commit


11 Dec, 2012

2 commits


28 Nov, 2012

1 commit


15 Nov, 2012

4 commits


12 Nov, 2012

1 commit


02 Nov, 2012

1 commit


30 Oct, 2012

1 commit


29 Oct, 2012

1 commit


24 Oct, 2012

2 commits


27 Sep, 2012

1 commit


19 Sep, 2012

2 commits


14 Sep, 2012

1 commit

  • When unplug, blank happens, HDMI audio can't play properly. So in
    driver, audio pcm would be disconnected when event above happens.
    However, pulse audio can't process disconnect event properly and if an
    blank or unplug event happens, HDMI sink would lost and can't be back
    again.

    In this patch, instead of disconnecting audio PCM stream, triggering
    stop audio pcm while unplug and blank, triggering start again while plug
    and unblank if the audio pcm is triggerd stop in the unplug/blank event.
    Signed-off-by: Chen Liangjun

    Chen Liangjun
     

13 Sep, 2012

1 commit

  • HDMI audio driver is responsible for add IEC header into audio sample.
    In HDMI audio driver, a variable named rtd->appl_bytes is maintained to
    stand for how many audio sample have already processed. appl_bytes
    stands for how many audio sample the user space have already feed into
    kernel driver. So we use the connt = appl_bytes - rtd->appl_bytes to
    decide how many data need to be processed. And the processed data would
    be write into an preallocated buffer called hw_buf in driver.

    When doing seek operation, the appl_bytes changes in an wide range. So
    it is possible that the count value is far larger than the size of
    hw_buf and the memory access un-existed address error would happens.

    In this patch, Add check operation for count to avoid kernel panic.

    Kernel panic log:
    seeking: 0:00:18.000000000/0:03:0Unable to handle kernel paging request
    at virtual address ffdf0000
    pgd = 80004000
    [ffdf0000] *pgd=71e35811, *pte=00000000, *ppte=00000000
    Internal error: Oops: 7 [#1] PREEMPT SMP
    Modules linked in: vivante drm galcore
    CPU: 0 Not tainted (3.0.35-2014-g7a9337b #1)
    PC is at hdmi_dma_mmap_copy+0x134/0x190
    LR is at hdmi_dma_mmap_copy+0x5c/0x190
    pc : [] lr : [] psr: 800f0193
    sp : 80a61e98 ip : ffdf0000 fp : ffdeffc0
    r10: 00000055 r9 : ffdeff80 r8 : 0029b450
    r7 : 00000060 r6 : ffdf0200 r5 : 00000240 r4 : 00000120
    r3 : 00000000 r2 : ffdf0000 r1 : 00000000 r0 : 00000090
    Flags: Nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
    Control: 10c53c7d Table: 6d28804a DAC: 00000015
    Process swapper (pid: 0, stack limit = 0x80a602f0)
    Stack: (0x80a61e98 to 0x80a62000)
    1e80: 00000002
    000037f1
    1ea0: 00006000 e1d3a7e4 a00f0193 e1d3a780 e1dcab00 00a83100 00a83100
    00006000
    1ec0: 00006000 803e24f4 413187b9 00000000 0073001a e1dd1e00 00000001
    00000001
    1ee0: 00000080 00000093 80ac7070 80a66a80 00000001 800a5ca8 8c80e568
    efb3e7b9
    1f00: 00000055 80a66a80 80a66acc e1ea9bc0 00000093 00000000 80a60000
    00000000
    1f20: 00000000 800a5e14 80a66a80 80a66acc 0000107f 800a8198 80a71cc0
    80038c00
    1f40: 80a60000 800a5610 000001f0 80040830 ffffffff f2a00100 00000093
    00000002
    1f60: 00000001 8003f9cc 80ac5f60 800f0093 00000001 00000000 80a60000
    80abeb64
    1f80: 804e1a54 80a74e7c 1000406a 412fc09a 00000000 00000000 00000000
    80a61fb0
    1fa0: 8004d52c 80040ac4 400f0013 ffffffff 80040aa0 80040cbc 00000001
    80a71b3c
    1fc0: 80abeac0 8002e3c4 8c80b140 80008868 800082f8 00000000 00000000
    8002e3c4
    1fe0: 00000000 10c53c7d 80a71a6c 8002e3c0 80a74e74 10008040 00000000
    00000000
    [] (hdmi_dma_mmap_copy+0x134/0x190) from []
    (hdmi_dma_isr+0x17c/0x1a0)
    [] (hdmi_dma_isr+0x17c/0x1a0) from []
    (handle_irq_event_percpu+0x50/0x180)
    [] (handle_irq_event_percpu+0x50/0x180) from []
    (handle_irq_event+0x3c/0x5c)
    [] (handle_irq_event+0x3c/0x5c) from []
    (handle_fasteoi_irq+0xbc/0x154)
    [] (handle_fasteoi_irq+0xbc/0x154) from []
    (generic_handle_irq+0x28/0x3c)
    [] (generic_handle_irq+0x28/0x3c) from []
    (handle_IRQ+0x4c/0xac)
    [] (handle_IRQ+0x4c/0xac) from []
    (__irq_svc+0x4c/0xe8)
    [] (__irq_svc+0x4c/0xe8) from []
    (default_idle+0x24/0x28)
    [] (default_idle+0x24/0x28) from []
    (cpu_idle+0xbc/0xfc)
    [] (cpu_idle+0xbc/0xfc) from []
    (start_kernel+0x248/0x288)
    [] (start_kernel+0x248/0x288) from [] (0x10008040)
    Code: c1a0c009 c08b6005 c1a0200b da00000a (e0d230b2)

    Signed-off-by: Chen Liangjun

    Chen Liangjun