23 Feb, 2017

40 commits

  • Forward imx_3.14.y mxc video output drivers to 4.1 kernel.

    The priv field of v4l2_pix_format is used to expand colorspace,
    and can not use to pass IPU input crop size.
    Add private IOCTL VIDIOC_S_INPUT_CROP and VIDIOC_G_INPUT_CROP
    to pass input crop size.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • Regarding to the limitation of the iMX ADAP(pcie connector),
    only imx7d 12x12 arm2 board is used to verify the pcie
    ep/rc validation system on imx7d platforms

    Enalbe the msi pcie ep rc on it.
    Test howto:
    - Enable CONFIG_PCI_MSI=y, when rebuild the rc/ep images

    - EP side(console command and kernel message):
    root@imx6sxsabresd:~# ./memtool -32 =0
    Writing 32-bit value 0x0 to address

    - RC side(console command and kernel message):
    root@imx6sxsabresd:~# cat /proc/interrupts | grep MSI
    384: 1 PCI-MSI

    Note:
    imx6q msi_addr 0x01ff_8000
    imx6sx msi_addr 0x08ff_8000
    imx7d msi_addr 0x4ffc_0000

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • Regarding to the limitation of the iMX ADAP(pcie connector),
    only imx7d 12x12 arm2 board is used to verify the pcie
    ep/rc validation system on imx7d platforms

    hw setup:
    * two imx boards, one is used as pcie rc, the other is used
    as pcie ep. Connected by fsl pcie adap adaptor.

    sw setup:
    * when build rc image, make sure that
    CONFIG_IMX_PCIE=y
    # CONFIG_EP_MODE_IN_EP_RC_SYS is not set
    CONFIG_RC_MODE_IN_EP_RC_SYS=y
    * when build ep image
    CONFIG_IMX_PCIE=y
    CONFIG_EP_MODE_IN_EP_RC_SYS=y
    # CONFIG_RC_MODE_IN_EP_RC_SYS is not set

    features:
    * set-up link between rc and ep by their stand-alone
    ref clk running internally.

    * in ep's system, ep can access the reserved ddr memory
    (default address:0x4000_0000 on imx6q sd board, and
    0xb000_0000 on imx6sx sdb and imx7d arm2 boards) of
    pcie rc's system, by the interconnection between pcie
    ep and pcie rc.

    * add the configuration methods in the ep side, used to
    configure the start address and the size of the reserved
    rc's memory window.
    - cat /sys/devices/soc0/soc.1/1ffc000.pcie/rc_memw_info
    - echo 0x41000000 > /sys/devices/soc0/soc.1/1ffc000.pcie/rc_memw_start_set
    - echo 0x200000 > /sys/devices/soc0/soc.1/1ffc000.pcie/rc_memw_size_set

    * provide one example, howto configure the bar# and so on,
    when pcie ep emaluates one memory ram ep device

    * setup one new outbound memory region at rc side, used
    to let imx pcie rc can access the memory of imx pcie ep
    in imx pcie rc ep validation system.
    - set the default address of the ddr memory to be 0x4000_0000
    on imxq sd board, and 0xb000_0000 on imx6sx sdb and imx7d
    arm2 boards.

    NOTE:
    * boot up ep platform firstly, then boot up rc platform.
    * make sure that mem=768M is contained in the kernel command line,
    since the start address of the upper 256mb of the 1g ddr mem is
    reserved to do the pcie ep rc access operations in default.

    Test howto of the RC access memory of EP on imx6q sd platforms.
    step1:
    EP side:
    1.1:
    echo > /sys/devices/.../pcie/ep_bar0_addr

    1.2:
    memtool -32 4
    E
    Reading 0x4 count starting at address 0x40000000

    : 6FE9E9F6 7583FBB9 39EAEFEA FBDCFD78

    step2:
    RC side:
    memtool -32 =58D454DA
    memtool -32 =7332095B

    step3:
    EP side:
    memtool -32 4
    E
    Reading 0x4 count starting at address 0x40000000

    : 58D454DA 7332095B 39EAEFEA FBDCFD78

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • - enable pcie functions on imx7d platforms
    - grst/brst should be asserted/de-asserted during resume,
    since the pcie power would be cut off automatically by HW
    during system suspend/resume

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • - move "program correct class for RC" from dw_pcie_host_init()
    to dw_pcie_setup_rc(). since this is RC setup, it's
    better to contained in dw_pcie_setup_rc function.
    Then, RC can be re-setup really by dw_pcie_setup_rc().
    - add one store/re-store msi cfg functions. Because that
    pcie controller maybe powered off during system suspend,
    and the msi data configuration would be lost.
    these functions can be used to store/restore the msi data
    and msi_enable during the suspend/resume callback.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • This reverts commit b71c99801e18eb172ae34851daf25044a3bf644a.

    Signed-off-by: Oliver Brown
    (cherry picked from commit 5c74966c0e7deb0ac84b3fa8a84c6c942e7d434f)

    Conflicts:
    drivers/media/v4l2-core/v4l2-compat-ioctl32.c
    include/media/v4l2-subdev.h

    Oliver Brown
     
  • 1. Upstream 5.0.11p7 driver to kernel

    2. Add the GPU configuration to imx6q.dtsi

    3. Remove IRQF_DISABLED in GPU driver
    The IRQF_DISABLED has been removed from 4.1.0 kernel. To accomodate with
    the change, add version check logic and use 0x0 instead of IRQF_DISABLED
    from 4.1.0 kernel on.

    4. Convert file->f_dentry->d_inode to file_inode() in GPU driver
    The file struct has changed since 3.19. Changed the usage in GPU driver
    too.

    5. Add version check for CONFIG_PM_RUNTIME
    The CONFIG_PM_RUNTIME will never be used in 4.1.0 kernel. Add version
    check to avoid calling it in GPU driver.

    Signed-off-by: Shawn Xiao

    Shawn Xiao
     
  • No need to alloc bd for hdmi audio, and the period len of hdmi audio is
    0, so add constraint for it.

    And correct per_address and per_address2 for hdmi audio.

    Signed-off-by: Zidan Wang

    Zidan Wang
     
  • Enable devfreq cooling to trigger GPU freq change when
    hot trip is reached.

    Make sure thermal driver loaded after cpufreq is loaded,
    otherwise, cpu_cooling will not get valid cpufreq table,
    hence cpu_cooling will be not working.

    Signed-off-by: Bai Ping

    Bai Ping
     
  • add .get_trend callback to determine the thermal raise/fall trend,
    when the temp great than a threshold, drop to the lowest trend
    (THERMAL_TREND_DROP_FULL).

    Signed-off-by: Bai Ping

    Bai Ping
     
  • This pacth re-write part of the code the support i.MX6 and i.MX7
    in thermal driver. the TEMPMON module in i.MX6 and i.MX7 can provide
    the same funtion, but has different register offset and bitfield define.

    Signed-off-by: Bai Ping

    Bai Ping
     
  • On i.MX6SL, we must make sure ARM:IPG clock ratio is within 12:5 when entering
    wait mode. If the system is in low_bus_freq_mode, the IPG is at 12MHz
    according the busfreq code. So the max rate of ARM is 28.8MHz when entering
    wait mode. As there is no way run at this clk rate, so set ARM to run from
    24MHz OSC.

    Signed-off-by: Bai Ping

    Bai Ping
     
  • Add busfreq support for i.MX6SL SOC. we support three
    busfreq mode (high_bus_freq_mode/low_bus_freq_mode and
    audio_bus_freq_mode).

    Signed-off-by: Bai Ping

    Bai Ping
     
  • The 'PLL1_SYS' and 'PLL1_SW' clks are used by the cpufreq
    driver to do dynamic frequency changing procedure.

    The 'CLK_SET_PARENT_GATE' should not be set for 'PLL1_SW'
    clk, this clock's prepare_count is not zero all the time.

    change the clk type of 'PLL1_SYS' to fixed_factor. due to
    the hardware limit, when changing the ARM_PODF. This clock's
    output should not be gated.

    Signed-off-by: Bai Ping

    Bai Ping
     
  • According to the latest reference manual, the default AXI clock rate
    should be 264MHz. Soucre AXI/AHB from pll2_bus to get the required
    clock rate.

    Signed-off-by: Bai Ping
    (cherry picked from commit d7560da7baee7a14ecb33d51182bbdc485ee6d7d)

    Bai Ping
     
  • send a message to our remote processor, and tell remote
    processor about this channel

    Signed-off-by: Richard Zhu
    (cherry picked from commit 2708c004a60c5b6da020803ee9291b83984d4a65)

    Richard Zhu
     
  • AXI clk should be always enabled, as many peripheral
    devices need this clk to be on, especially for busfreq,
    AXI podf change needs AXI clk and its parent on.

    Signed-off-by: Anson Huang

    Anson Huang
     
  • Forward imx_3.14.y IPU and display drivers to 4.1 kernel.
    This includes IPU core driver, display driver, LDB and HDMI driver.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • When VPU is running at 352MHz, SOC/PU voltage need to be
    at 1.25V for 396/792MHz setpoint, as 396M setpoint is
    removed, so only increase 792M setpoint's voltage.

    Signed-off-by: Anson Huang

    Anson Huang
     
  • As A9 and M4 share many resources on i.MX6SX, especially for
    clk and power related resource, so we need to handle the hardware
    conflict between these two cores, there are two cases that we
    need to consider currently:

    clk management: for every clk node, only when both A9 and
    M4 do NOT need it, then we can disable it from hardware;

    Here we use MU and hardware SEMA4 to achieve our goal, MU is
    for communiation between A9 and M4, SEMA4 is to protect the
    shared memory.

    For clk management, we use shared memory to maintain the clk
    status for both A9 and M4 side, and this shared memory is
    protected by hardware SEMA4, A9 and M4 will maintain their
    own clk tree info in their SW environment, and get other
    CORE's clk tree info from shared memory to decide whether
    to perform a hardware setting change when they plan to.

    Signed-off-by: Anson Huang

    Anson Huang
     
  • - add linux sema4 driver.
    - use volatile types in sema4 structure.
    - align the port definiton a9 is 1, m4 is 2.

    Signed-off-by: Anson Huang
    Signed-off-by: Richard Zhu

    Anson Huang
     
  • This patch adds clk API return check for imx6sx.

    Signed-off-by: Anson Huang

    Anson Huang
     
  • errata:
    When a read command returns less data than specified in the PRDs (for
    example, there are two PRDs for this command, but the device returns a
    number of bytes which is less than in the first PRD), the second PRD of
    this command is not read out of the PRD FIFO, causing the next command
    to use this PRD erroneously.

    workaround
    - forces sg_tablesize = 1
    - modified the sg_io function in block/scsi_ioctl.c to use a 64k buffer
    allocated with dma_alloc_coherent during the probe in ahci_imx
    - In order to fix the scsi/sata hang, when CD_ROM and HDD are
    accessed simultaneously after the workaround is applied.
    Do not go to sleep in scsi_eh_handler, when there is host failed.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • The hang issue is caused by the driver pan display function.
    In the mxsfb, the pan display didn't wait the address flip
    done before it exits. So this may cause the irq handler
    running at the blank state which will cause system hang.
    Two things are done in this patch:
    1. Remove the 'flip_sem', since the pan_display is always
    called under the console lock hold.
    2. Add a new completion 'flip_complete" to wait for the
    address flip done.

    Signed-off-by: Fancy Fang
    (cherry picked from commit 7cb41403cb7cf1e977536af2a0422a214382c9f5)

    Conflicts:
    drivers/video/mxsfb.c

    Fancy Fang
     
  • this patch is chery-picked from imx_3.14.y
    (cherry picked from commit 51e376b469c)
    ENGR00274056-1 thermal: add device cooling for thermal driver

    cpu cooling is not enough when temperature is
    too hot, as some devices may contribute a lot of heat
    to SOC, such as GPU, so we need to add device cooling
    as well, when system is too hot, devices can also take
    their actions to lower SOC temperature.

    when temperature cross the passive trip, device cooling
    driver will send out notification, those devices who
    register this devfreq_cooling notification will take
    actions to lower SOC temperature.

    Signed-off-by: Anson Huang
    Signed-off-by: Shawn Guo
    Signed-off-by: Bai Ping

    Anson Huang
     
  • When allocating large memory, such as 128K,
    vmalloc() uses single page for the allocation process,
    while kzalloc() has to consume a continuous pages for the allocation.

    In low memory case, the kzalloc() may fails.
    So use the vmalloc() instead.

    Also add some sanity check for the NULL pointer.

    Add missed line for ENGR00161643-3 UTP : bugfix

    Signed-off-by: Huang Shijie

    Huang Shijie
     
  • ubiformat includes command, data, command periods,
    it breaks utp protocol for PUT commands. So we add two operations to fix it.
    One is sending busy to host before the data periods begins.
    The second is adding a new command to waiting ubiformat's command period.

    Signed-off-by: Li Xingyu
    Signed-off-by: Peter Chen

    Peter Chen
     
  • - the root cause of this issue is there is no protection for
    the resource which will be accessed by multiple thread

    Signed-off-by: Tony LIU

    Tony LIU
     
  • uboot needs pass down below parameters
    removable = 1
    stall = 0
    idVendor = 0x066F
    idProduct = 0x37FF
    iSerialNumber = ""

    sleep_thread add new parameter

    Signed-off-by: Lu Lin
    Signed-off-by: Frank Li

    Frank Li
     
  • Add isl29023 driver support for i.MX6Q/DL/SX platform. The code derives from 3.10.y branch.

    Signed-off-by: Luwei Zhou
    Signed-off-by: Fugang Duan
    (cherry picked from commit: b0134420bba0022151499f1bb15e0d5daba970fa)

    Luwei Zhou
     
  • Enable i.MX6SX adc driver. ADC driver will try getting ADC controller
    channel number via device tree, because i.MX chip enable 4 channels
    on each controller.

    Signed-off-by: Luwei Zhou
    Signed-off-by: Fugang Duan
    (cherry picked from commit 14a6a98f64e26702b1c0ecfc7d58a45ee5752d54)

    Luwei Zhou
     
  • Add mma8451 driver support for i.MX6Q/DL/SX platform. The code derives from 3.10.y branch.

    Signed-off-by: Luwei Zhou
    Signed-off-by: Fugang Duan
    (cherry picked from commit: 69e1811b92ed7b3dc2f1db0a9447a8570dd16231)

    luweizhou
     
  • evbug will open the mma8450 on i.MX6SL_EVK and mma8450 will work in 2G mode by default.
    That is the reason why mma8450 logs will be printed out. The main changes is below:

    * Remove the open(), close() hook out of the drivers. The open() and close()
    hook in input framwork is defined as void type. It isn't strictly safe in
    logic when some error happends. So remove them out.
    * Modify the mma8450 to standby mode by default. It will be more power saving
    and there would be no log printing out after booting up.
    * Provide the sys interface to modify the mma8450 work modes. Then the higher
    layer can modify the the mma8450 work mode via the interface. It would be
    much safer.There would be a sclaemode interface in the folder of
    /sys/devices/soc0/soc.1/2100000.aips-bus/21a0000.i2c/i2c-0/0-001c/scalemode
    User can use cat to read the current scalemode and echo to write. The mode
    is defined as: MODE_STANDBY: 0 MODE_2G:1 MODE_4G:2 MODE_8G:3
    * Add mutex to protect and some error handling.

    Signed-off-by: Luwei Zhou
    Signed-off-by: Fugang Duan
    (cherry picked from commit c51a786078fd569ce95eb6dcf09c76d1b3c0f172)

    Fugang Duan
     
  • Add chip ID check in probe function. The mma8450 is
    on the E-INK daughter board. When the daughter board
    is not pluged, there would be polling error log
    continuously. Add the check to avoid this.

    Signed-off-by: Luwei Zhou
    Signed-off-by: Fugang Duan
    (cherry picked from commit e9f2c4cf673dee1527925f30a9f3fd137d9799ad)

    Luwei Zhou
     
  • For LPSR mode, UART iomux settings will be lost after resume,
    so add pinctrl sleep mode support.

    Signed-off-by: Anson Huang
    Signed-off-by: Fugang Duan

    Fugang Duan
     
  • when kernel command line has "uart_from_osc" defined, set uart1
    parent clock to OSC for low power case.

    Signed-off-by: Fugang Duan

    Fugang Duan
     
  • Add mlb support on imx_4.1.y. The files are copied from imx_3.14.y.

    Signed-off-by: Gao Pan

    Gao Pan
     
  • Include 3.14 VPU driver with no change

    Signed-off-by: Hongzhang Yang

    Hongzhang Yang
     
  • By using gstreamer plugin v4l2radio, it will call VIDIOC_S_CTRL with
    V4L2_CID_AUDIO_MUTE, but return failed.

    So add V4L2_CID_AUDIO_MUTE CTRL support for radio-si476x.

    Signed-off-by: Zidan Wang
    (cherry picked from commit c18520adfd6de40dcc0659ddd778b0a2bd383cd4)

    Zidan Wang
     
  • When transfer rangelow and rangehigh from user space, the local variable
    rangelow and rangehigh will not be initialized before using them.

    Signed-off-by: Zidan Wang
    (cherry picked from commit c326f56005f0ee3d0c1fd6ebdebabda919c278dd)

    Zidan Wang