05 Sep, 2013

1 commit


04 Jan, 2013

1 commit


15 Dec, 2012

1 commit

  • FIMC is stand for Fully Interfactive Mobile Camera and
    supports image scaler/rotator/crop/flip/csc and input/output DMA operations
    and also supports writeback and display output operations.

    This driver is registered to IPP subsystem framework to be used by user side
    and user can control the FIMC hardware through some interfaces of IPP subsystem
    framework.

    Changelog v6:
    - fix build warning.

    Changelog v1 ~ v5:
    - add comments, code fixups and cleanups.

    Signed-off-by: Eunchul Kim
    Signed-off-by: Jinyoung Jeon
    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Eunchul Kim
     

07 Oct, 2012

1 commit

  • Inki writes:
    "this patch set updates exynos drm framework and includes minor fixups.
    and this pull request except hdmi device tree support patch set posted
    by Rahul Sharma because that includes media side patch so for this
    patch set, we may have git pull one more time in addition, if we get
    an agreement with media guys. for this patch, you can refer to below link,
    http://comments.gmane.org/gmane.comp.video.dri.devel/74504

    this pull request adds hdmi device tree support
    and includes related patch set such as disabling of hdmi internal
    interrupt, suppport for platform variants for hdmi and mixer,
    support to disable video processor based on platform type and
    removal of drm common platform data. as you know, this patch
    set was delayed because it included an media side patch. so for this,
    we got an ack from v4l2-based hdmi driver author, Tomasz Stanislawski."

    * 'exynos-drm-next' of git://git.infradead.org/users/kmpark/linux-samsung: (34 commits)
    drm: exynos: hdmi: remove drm common hdmi platform data struct
    drm: exynos: hdmi: add support for exynos5 hdmi
    drm: exynos: hdmi: replace is_v13 with version check in hdmi
    drm: exynos: hdmi: add support for exynos5 mixer
    drm: exynos: hdmi: add support to disable video processor in mixer
    drm: exynos: hdmi: add support for platform variants for mixer
    drm: exynos: hdmi: add support for exynos5 hdmiphy
    drm: exynos: hdmi: add support for exynos5 ddc
    drm: exynos: remove drm hdmi platform data struct
    drm: exynos: hdmi: turn off HPD interrupt in HDMI chip
    drm: exynos: hdmi: use s5p-hdmi platform data
    drm: exynos: hdmi: fix interrupt handling
    drm: exynos: hdmi: support for platform variants
    media: s5p-hdmi: add HPD GPIO to platform data
    drm/exynos: fix kcalloc size of g2d cmdlist node
    drm/exynos: fix to calculate CRTC shown via screen
    drm/exynos: fix display power call issue.
    drm/exynos: add platform_device_id table and driver data for drm fimd
    drm/exynos: Fix potential NULL pointer dereference
    drm/exynos: support drm_wait_vblank feature for VIDI
    ...

    Conflicts:
    include/drm/exynos_drm.h

    Dave Airlie
     

05 Oct, 2012

3 commits


04 Oct, 2012

1 commit


03 Oct, 2012

1 commit


27 Jul, 2012

1 commit

  • The exynos drm driver used a specific ioctl - DRM_EXYNOS_PLANE_SET_ZPOS
    to set zpos of plane. It can be substitute to property of plane. This
    patch adds a property for plane zpos and removes
    DRM_EXYNOS_PLANE_SET_ZPOS ioctl.

    Signed-off-by: Joonyoung Shim
    Signed-off-by: Kyungmin Park
    Signed-off-by: Inki Dae

    Joonyoung Shim
     

05 Jun, 2012

1 commit


17 May, 2012

1 commit

  • Changelog v3:
    - use __u64 instead of pointer in ioctl struct.

    The G2D is a 2D graphic accelerator that supports Bit Block Transfer.
    This G2D driver is exynos drm specific and supports only G2D(version
    4.1) of later Exynos series from Exynos4X12 because supporting DMA.

    The G2D is performed by two tasks simply.
    1. Configures the rendering parameters, such as foreground color and
    coordinates data by setting the drawing context registers.
    2. Start the rendering process by setting thre relevant command
    registers accordingly.

    The G2D version 4.1 supports DMA mode as host interface. User can make
    command list to reduce HOST(ARM) loads. The contents of The command list
    is setted to relevant registers of G2D by DMA.

    The command list is composed Header and command sets and Tail.
    - Header: The number of command set(4Bytes)
    - Command set: Register offset(4Bytes) + Register data(4Bytes)
    - Tail: Pointer of base address of the other command list(4Bytes)

    By Tail field, the G2D can process many command lists without halt at
    one go.

    The G2D has following the rendering pipeline.
    --> Primitive Drawing --> Rotation --> Clipping --> Bilinear Sampling
    --> Color Key --> ROP --> Mask Operation --> Alpha Blending -->
    Dithering --> FrameBuffer

    And supports various operations from the rendering pipeline.
    - copy
    - fast solid color fill
    - window clipping
    - rotation
    - flip
    - 4 operand raster operation(ROP4)
    - masking operation
    - alpha blending
    - color key
    - dithering
    - etc

    User should make the command list to data and registers needed by
    operation to use. The Exynos G2D driver only manages the command lists
    received from user. Some registers needs memory base address(physical
    address) of image. User doesn't know its physical address, so fills the
    gem handle of that memory than address to command sets, then G2D driver
    converts it to memory base address.

    We adds three ioctls and one event for Exynos G2D.

    - ioctls
    DRM_EXYNOS_G2D_GET_VER: get the G2D hardware version
    DRM_EXYNOS_G2D_SET_CMDLIST: set the command list from user to driver
    DRM_EXYNOS_G2D_EXEC: execute the command lists setted to driver

    - event
    DRM_EXYNOS_G2D_EVENT: event to give notification completion of the
    command list to user

    Signed-off-by: Joonyoung Shim
    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Joonyoung Shim
     

08 May, 2012

3 commits


12 Apr, 2012

1 commit


03 Apr, 2012

1 commit


21 Mar, 2012

1 commit

  • this driver would be used for wireless display. virtual display
    driver has independent crtc, encoder and connector and to use
    this driver, user application should send edid data to this driver
    from wireless display.

    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Inki Dae
     

20 Mar, 2012

2 commits

  • with this patch, we can allocate physically continuous or non-continuous
    memory and also it creates scatterlist for iommu support so allocated
    memory region can be mapped to iommu page table using scatterlist.

    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park
    Signed-off-by: Dave Airlie

    Inki Dae
     
  • Later Exynos series from Exynos4X12 support HDMI version 1.4. We will
    distinguish to use which version via platform data. This patch supports
    only default features of HDMI version 1.4(The 3D, sound and etc don't
    support yet)

    Signed-off-by: Joonyoung Shim
    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park
    Signed-off-by: Dave Airlie

    Joonyoung Shim
     

15 Feb, 2012

2 commits


29 Dec, 2011

1 commit

  • This patch is hdmi display support for exynos drm driver.

    There is already v4l2 based exynos hdmi driver in drivers/media/video/s5p-tv
    and some low level code is already in s5p-tv and even headers for register
    define are almost same. but in this patch, we decide not to consider separated
    common code with s5p-tv.

    Exynos HDMI is composed of 5 blocks, mixer, vp, hdmi, hdmiphy and ddc.

    1. mixer. The piece of hardware responsible for mixing and blending multiple
    data inputs before passing it to an output device. The mixer is capable of
    handling up to three image layers. One is the output of VP. Other two are
    images in RGB format. The blending factor, and layers' priority are controlled
    by mixer's registers. The output is passed to HDMI.

    2. vp (video processor). It is used for processing of NV12/NV21 data. An image
    stored in RAM is accessed by DMA. The output in YCbCr444 format is send to
    mixer.

    3. hdmi. The piece of HW responsible for generation of HDMI packets. It takes
    pixel data from mixer and transforms it into data frames. The output is send
    to HDMIPHY interface.

    4. hdmiphy. Physical interface for HDMI. Its duties are sending HDMI packets to
    HDMI connector. Basically, it contains a PLL that produces source clock for
    mixer, vp and hdmi.

    5. ddc (display data channel). It is dedicated i2c channel to exchange display
    information as edid with display monitor.

    With plane support, exynos hdmi driver fully supports two mixer layes and vp
    layer. Also vp layer supports multi buffer plane pixel formats having non
    contigus memory spaces.

    In exynos drm driver, common drm_hdmi driver to interface with drm framework
    has opertion pointers for mixer and hdmi. this drm_hdmi driver is registered as
    sub driver of exynos_drm. hdmi has hdmiphy and ddc i2c clients and controls
    them. mixer controls all overlay layers in both mixer and vp.

    Vblank interrupts for hdmi are handled by mixer internally because drm
    framework cannot support multiple irq id. And pipe number is used to check
    which display device irq happens.

    History
    v2: this version
    - drm plane feature support to handle overlay layers.
    - multi buffer plane pixel format support for vp layer.
    - vp layer support

    RFCv1: original
    - at https://lkml.org/lkml/2011/11/4/164

    Signed-off-by: Seung-Woo Kim
    Signed-off-by: Inki Dae
    Signed-off-by: Joonyoung Shim
    Signed-off-by: Kyungmin Park

    Seung-Woo Kim
     

21 Dec, 2011

1 commit

  • The exynos fimd supports 5 window overlays. Only one window overlay of
    fimd is used by the crtc, so we need plane feature to use the rest
    window overlays.

    This creates one ioctl exynos specific - DRM_EXYNOS_PLANE_SET_ZPOS, it
    is the ioctl to decide for user to assign which window overlay.

    Signed-off-by: Joonyoung Shim
    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Joonyoung Shim
     

15 Nov, 2011

1 commit

  • this patch addes exynos_drm_gem_init() creating and initialzing a gem.
    allocation functions could use this function to create new gem and
    it changes size type of exynos_drm_gem_create structure to 64bit
    and also corrects comments to exynos_drm_gem_create structure.

    Signed-off-by: Inki Dae
    Signed-off-by: Kyungmin Park

    Inki Dae
     

11 Nov, 2011

1 commit


05 Oct, 2011

1 commit

  • This patch is a DRM Driver for Samsung SoC Exynos4210 and now enables
    only FIMD yet but we will add HDMI support also in the future.

    this patch is based on git repository below:
    git://people.freedesktop.org/~airlied/linux.git
    branch name: drm-next
    commit-id: 88ef4e3f4f616462b78a7838eb3ffc3818d30f67

    you can refer to our working repository below:
    http://git.infradead.org/users/kmpark/linux-2.6-samsung
    branch name: samsung-drm

    We tried to re-use lowlevel codes of the FIMD driver(s3c-fb.c
    based on Linux framebuffer) but couldn't so because lowlevel codes
    of s3c-fb.c are included internally and so FIMD module of this driver has
    its own lowlevel codes.

    We used GEM framework for buffer management and DMA APIs(dma_alloc_*)
    for buffer allocation so we can allocate physically continuous memory
    for DMA through it and also we could use CMA later if CMA is applied to
    mainline.

    Refer to this link for CMA(Continuous Memory Allocator):
    http://lkml.org/lkml/2011/7/20/45

    this driver supports only physically continuous memory(non-iommu).

    Links to previous versions of the patchset:
    v1: < https://lwn.net/Articles/454380/ >
    v2: < http://www.spinics.net/lists/kernel/msg1224275.html >
    v3: < http://www.spinics.net/lists/dri-devel/msg13755.html >
    v4: < http://permalink.gmane.org/gmane.comp.video.dri.devel/60439 >
    v5: < http://comments.gmane.org/gmane.comp.video.dri.devel/60802 >

    Changelog v2:
    DRM: add DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl command.

    this feature maps user address space to physical memory region
    once user application requests DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl.

    DRM: code clean and add exception codes.

    Changelog v3:
    DRM: Support multiple irq.

    FIMD and HDMI have their own irq handler but DRM Framework can regiter
    only one irq handler this patch supports mutiple irq for Samsung SoC.

    DRM: Consider modularization.

    each DRM, FIMD could be built as a module.

    DRM: Have indenpendent crtc object.

    crtc isn't specific to SoC Platform so this patch gets a crtc
    to be used as common object.
    created crtc could be attached to any encoder object.

    DRM: code clean and add exception codes.

    Changelog v4:
    DRM: remove is_defult from samsung_fb.

    is_default isn't used for default framebuffer.

    DRM: code refactoring to fimd module.
    this patch is be considered with multiple display objects and
    would use its own request_irq() to register a irq handler instead of
    drm framework's one.

    DRM: remove find_samsung_drm_gem_object()

    DRM: move kernel private data structures and definitions to driver folder.

    samsung_drm.h would contain only public information for userspace
    ioctl interface.

    DRM: code refactoring to gem modules.
    buffer module isn't dependent of gem module anymore.

    DRM: fixed security issue.

    DRM: remove encoder porinter from specific connector.

    samsung connector doesn't need to have generic encoder.

    DRM: code clean and add exception codes.

    Changelog v5:
    DRM: updated fimd(display controller) driver.
    added various pixel formats, color key and pixel blending features.

    DRM: removed end_buf_off from samsung_drm_overlay structure.
    this variable isn't used and end buffer address would be
    calculated by each sub driver.

    DRM: use generic function for mmap_offset.
    replaced samsung_drm_gem_create_mmap_offset() and
    samsung_drm_free_mmap_offset() with generic ones applied
    to mainline recentrly.

    DRM: removed unnecessary codes and added exception codes.

    DRM: added comments and code clean.

    Changelog v6:
    DRM: added default config options.

    DRM: added padding for 64-bit align.

    DRM: changed prefix 'samsung' to 'exynos'

    Signed-off-by: Inki Dae
    Signed-off-by: Joonyoung Shim
    Signed-off-by: Seung-Woo Kim
    Signed-off-by: Kyungmin Park
    Reviewed-by: Konrad Rzeszutek Wilk
    Reviewed-by: Dave Airlie
    Reviewed-by: Rob Clark
    Signed-off-by: Dave Airlie

    Inki Dae