1. 11 Oct, 2012 1 commit
  2. 10 Oct, 2012 10 commits
  3. 28 Sep, 2012 1 commit
  4. 26 Sep, 2012 28 commits
    • Tomi Valkeinen's avatar
      Merge branch 'archit/wb-dispc-for-3.7' · 69036f0c
      Tomi Valkeinen authored
      Merge omapdss writeback work. These patches implement the low level writeback
      features in the DISPC, but do not yet add a way to actually use the writeback
      from the userspace.
      
      * archit/wb-dispc-for-3.7:
        OMAPDSS: DISPC: Configure color conversion coefficients for writeback
        OMAPDSS: DISPC: Add manager like functions for writeback
        OMAPDSS: DISPC: Configure writeback FIFOs
        OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup()
        OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup
        OMAPDSS: DISPC: Add function to set channel in for writeback
        OMAPDSS: DISPC: Don't set chroma resampling bit for writeback
        OMAPDSS: DISPC: Downscale chroma if plane is writeback
        OMAPDSS: DISPC: Configure input and output sizes for writeback
        OMAPDSS: DISPC: Add writeback register offsets and dss features structs
        OMAPDSS: DISPC: Allow both upscaling and downscaling of chroma
        OMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode
        OMAPDSS: DISPC: Don't pass channel out when configuring overlays
        OMAPDSS: DISPC: Make dispc_ovl_setup call dispc_ovl_setup_common
        OMAPDSS: OVERLAY: Add position and replication as overlay caps
        OMAPDSS: DISPC: Pass overlay caps as a parameter to dispc plane functions
        OMAPDSS: DISPC: Simplify function names for setting pipeline input and output sizes
        OMAPDSS: DISPC: Constify omap_overlay_info in dispc_ovl_setup()
      69036f0c
    • Tomi Valkeinen's avatar
      Merge branch 'archit/outputs-for-3.7' · 866f0956
      Tomi Valkeinen authored
      Merge omapdss output work, that creates a new entity "output" to represent the
      outputs (DPI, DSI, HDMI, ...) from DSS. An output sits in between an overlay
      manager and a panel, and helps us to remove references to panel devices from
      the omapdss core.
      
      * archit/outputs-for-3.7: (23 commits)
        OMAPDSS: Remove old way of setting manager and device links
        OMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable
        OMAPDSS: OVERLAY/MANAGER: Get device via output
        OMAPDSS: MANAGER: Update display sysfs store
        OMAPFB: Change dssdev->manager references
        OMAPDSS: HDMI: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: VENC: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: RFBI: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: SDI: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: DSI: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: DSI: Remove dsi_pdev_map global struct
        OMAPDSS: DPI: Replace dssdev->manager with dssdev->output->manager references
        OMAPDSS: Create links between managers, outputs and devices
        OMAPDRM: Remove manager->device references
        OMAPFB: remove manager->device references
        OMAP_VOUT: Remove manager->device references
        OMAPDSS: Remove manager->device references
        OMAPDSS: APPLY: Add manager set/unset output ops for omap_overlay_manager
        OMAPDSS: output: Add set/unset device ops for omap_dss_output
        OMAPDSS: outputs: Create and register output instances
        ...
      866f0956
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Configure color conversion coefficients for writeback · 6e5264b0
      Archit Taneja authored
      Writeback pipeline receives RGB data from one of the overlays or one of the
      overlay managers. If the target color mode is YUV422 or NV12, we need to convert
      the RGB pixels to YUV. The scaler in WB then converts it to the target color
      mode.
      
      Hence, the color conversion coefficients that need to be programmed are the ones
      which convert a RGB24 pixel to YUV444. Program these coefficients for writeback
      pipeline.
      
      Rearrange the code a bit to configure different coefficients for overlays and
      writeback.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      6e5264b0
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Add manager like functions for writeback · 0b23e5b8
      Archit Taneja authored
      Add functions to enable writeback, and set/check state of GO bit. These bits are
      identical in behaviour with the corresponding overlay manager bits. Configure
      them in a similar way to mgr_enable() and mgr_go_* functions. Add a helper to
      get the FRAMEDONE irq corresponding to writeback.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      0b23e5b8
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Configure writeback FIFOs · 8bbe09ee
      Archit Taneja authored
      Extend the DISPC fifo functions to also configure the writeback FIFO thresholds.
      
      The most optimal configuration for writeback is to push out data to the
      interconnect the moment writeback pushes enough pixels in the FIFO to form a
      burst. This reduces the chance of writeback overflowing it's FIFO.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      8bbe09ee
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Configure writeback specific parameters in dispc_wb_setup() · 9e4a0fc7
      Archit Taneja authored
      Configure some of the writeback specific parameters in dispc_wb_setup(). The
      writeback parameters configured are:
      
      truncation: This needs to be set if the color depth input to writeback is more
      than the color depth of the color mode we want to store in memory.
      
      writeback mode: This configures whether we want to use writeback in mem to mem
      or capture mode. This information will be directly passed by APPLY later.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      9e4a0fc7
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup · 749feffa
      Archit Taneja authored
      Create struct omap_dss_writeback_info, this is similar to omap_overlay_info,
      the major difference is that there is no parameter which describes the input
      size to writeback, this is because this is always fixed, and decided by the
      connected overlay or overlay manager. One more difference is that screen_width
      is renamed to buf_width, to give the value of stride the writeback buffer has.
      
      Call dispc_ovl_setup_common() through dispc_wb_setup() to configure overlay-like
      parameters. The parameters in dispc_ovl_setup_common() which do not hold for
      writeback are filled passed as zeroes or false, the code takes care of not
      configuring them as they won't possess the needed overlay caps.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      749feffa
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Add function to set channel in for writeback · d9ac773c
      Archit Taneja authored
      Writeback can take input from either one of the overlays, or one of the overlay
      managers. Add an enum which represents the channel_in for writeback, and maps
      to the register field programming.
      
      Add a function to configure channel in for writeback. This will be used later in
      APPLY.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      d9ac773c
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Don't set chroma resampling bit for writeback · 2a5561b1
      Archit Taneja authored
      The bit YUVCHROMARESAMPLING isn't there for writeback in DISPC_WB_ATTRIBUTES2.
      It isn't there because we don't upsample chroma like for video pipelines, we
      downsample chroma in writeback to get YUV422 or NV12 formats from the YUV444
      input.
      
      Ignore this bit in dispc_ovl_set_scaling_uv() if the plane is OMAP_DSS_WB.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      2a5561b1
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Downscale chroma if plane is writeback · f92afae2
      Archit Taneja authored
      When converting YUYV444 content to YUV422 or NV12 formats through writeback
      pipeline, the scaler needs to downscale the chroma plane. Ensure that chroma
      is downscaled when the pipeline is writeback.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      f92afae2
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Configure input and output sizes for writeback · 36d87d95
      Archit Taneja authored
      Writeback uses the WB_PICTURE_SIZE register to define the size of the content
      written to memory, this is the output of the scaler. It uses the WB_SIZE
      register to define the size of the content coming from the overlay/manager to
      which it is connected, this is the input to the scaler. This naming is different
      as compared to overlays.
      
      Add checks for writeback in dispc_ovl_set_input_size() and
      dispc_ovl_set_output_size() to write to the correct registers.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      36d87d95
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Add writeback register offsets and dss features structs · 7a155be3
      Archit Taneja authored
      Since writeback has many overlay like properties, and most of it's registers are
      similar to that of overlays, it's possible to reuse most of the overlay related
      DISPC code for writeback when considering it as a plane. Writeback was added as
      a plane in the omap_plane field as OMAP_DSS_WB.
      
      Add the writeback register offsets in dispc.h, add minimal WB plane related info
      needed in dss_features. Add a function which returns the number of writeback
      pipelines an OMAP version has.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      7a155be3
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Allow both upscaling and downscaling of chroma · 20fbb50b
      Archit Taneja authored
      In the function dispc_plane_set_scaling_uv(), create a parameter which tells if
      we want to upscale or downscale the chroma plane.
      
      Downscaling of chroma is required by writeback pipeline for converting the input
      YUV444 color format to YUV422 or NV12.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      20fbb50b
    • Archit Taneja's avatar
      OMAPDSS: DIPSC: Relax scaling limitations when in memory to memory mode · 8ba85306
      Archit Taneja authored
      The scalers of overlays and writeback do not have any constraints on downscale
      ratio when operating in memory to memory mode.
      
      This is because in memory to memory mode, we aren't connected to a display which
      needs data output at the rate of pixel clock. The scalers can perform as much
      downscaling as needed, the rate at which the scaler outputs is adjusted
      accordingly.
      
      Relax constraints related to downscaling based on whether the input overlays are
      connected to writeback in memory to memory mode. We pass a mem_to_mem boolean
      parameter to dispc_ovl_setup() from APPLY. This is currently set to false, this
      will later be configured to the correct value based on whether the overlay is
      connected to writeback or not. Do the same later for writeback when writeback is
      configured.
      
      In the scaling calculation code, we calculate the minimum amount of core clock we
      need to achieve the required downscaling. If we are in memory to memory mode, we
      set this to a very small value(1 in this case), this value would always be
      lesser than the actual DISPC core clock value, and hence the scaling checks
      would succeed.
      
      We take care that pixel clock isn't calculated for writeback and the overlays
      connected to it when in memory to memory mode. A pixel clock in such cases
      doesn't make sense.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      8ba85306
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Don't pass channel out when configuring overlays · 3e8a6ff2
      Archit Taneja authored
      dispc_ovl_setup_common() is to be used by both overlays and writeback. We pass
      channel out to figure out what manager the overlay is connected to, to determine
      the pixel clock rate. This is used to decide the scaling limitations for that
      overlay.
      
      writeback doesn't have a channel out, it has a channel in field which tells
      where writeback gets its input from. These are 2 different fields, and this
      prevents us reusing the overlay configuration code for writeback.
      
      To overcome this, we now pass omap_plane to overlay related functions rather
      than passing channel out. We create helper functions which can derive pclk/lclk
      from the omap_plane id.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      3e8a6ff2
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Make dispc_ovl_setup call dispc_ovl_setup_common · 84a880fd
      Archit Taneja authored
      Add a new static function called dispc_ovl_setup_common(). This function is used by
      dispc_ovl_setup() to configure the overlay registers. This split is done so that
      dispc_wb_setup() can reuse overlay register configuration related code.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      84a880fd
    • Archit Taneja's avatar
      OMAPDSS: OVERLAY: Add position and replication as overlay caps · d79db853
      Archit Taneja authored
      Add position and replication as overlay caps, and pass overlay caps as an
      argument to the corresponding functions. Adding position and replication to
      overlay caps seems a bit unnecessary, but it allows us to use the
      corresponding functions for writeback too.
      
      These caps will be set for all overlays, but not for writeback. This is done
      so writeback can reuse dispc_ovl_setup() to the maximum.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      d79db853
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Pass overlay caps as a parameter to dispc plane functions · 5b54ed3e
      Archit Taneja authored
      Currently, the functions below take the omap_plane parameter and derive the
      overlay caps within them. Pass the overlay caps as a parameter to the function
      to allow these to be used by writeback too.
      
      - dispc_ovl_set_zorder()
      - dispc_ovl_set_pre_mult_alpha()
      - dispc_ovl_setup_global_alpha()
      - dispc_ovl_calc_scaling()
      - dispc_ovl_setup()
      
      These functions will be used for writeback later, and the caps will help in
      deciding if they are to be used for writeback or not. This allows reuse of
      overlay caps for writeback.
      
      Using omap_overlay_caps for writeback seems a bit incorrect, but caps is
      something already in use by users of OMAPDSS(omapfb/omap_vout), so we use
      overlay caps for overlay like features of writeback too.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      5b54ed3e
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Simplify function names for setting pipeline input and output sizes · 78b687fc
      Archit Taneja authored
      The DISPC pipeline register names in the TRM for setting the buffer size and
      the output size are a bit misleading, for example, there are different register
      names for setting the buffer size for VID and GFX pipes. Things get more
      confusing when considering writeback pipeline.
      
      Rename the functions so that they tell whether they are configuring the input
      to the scalar or the output. These will be extended later to support writeback
      registers.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      78b687fc
    • Archit Taneja's avatar
      OMAPDSS: DISPC: Constify omap_overlay_info in dispc_ovl_setup() · 8eeb7019
      Archit Taneja authored
      The struct omap_overlay_info passed to dispc_ovl_setup() is used to configure
      DISPC registers. It shouldn't modify the overlay_info structure. The pos_y field
      was being changed in dispc_ovl_setup in the case of interlaced displays. Fix
      this and const qualifier to the omap_overlay_info argument.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      8eeb7019
    • Archit Taneja's avatar
      OMAPDSS: Remove old way of setting manager and device links · 3c2995ac
      Archit Taneja authored
      Now that an omap_dss_output can be used to link between managers and devices, we
      can remove the old way of setting manager and device links. This involves
      removing the device and manager pointers from omap_overlay_manager and
      omap_dss_device respectively, and removing the set_device/unset_device ops from
      omap_overlay_manager.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      3c2995ac
    • Archit Taneja's avatar
      OMAPDSS: APPLY: Remove omap_dss_device references from dss_ovl_enable/disable · 0f0e4e3c
      Archit Taneja authored
      An overlay isn't allowed to be enabled/disabled if it isn't connected to an
      omap_dss_device. This requirement isn't needed any more. An overlay can be
      enabled/disabled as long as it has an output connected to it. The output may
      not be connected to a device, but we can be assured that the connected
      manager's output is in use by an output interface.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      0f0e4e3c
    • Archit Taneja's avatar
      OMAPDSS: OVERLAY/MANAGER: Get device via output · 80d81d64
      Archit Taneja authored
      A manager is not connected to a device directly any more. It first connects
      to an output, and then to the display. Update overlay and manager get_device ops
      to return the device via the connected output.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      80d81d64
    • Archit Taneja's avatar
      OMAPDSS: MANAGER: Update display sysfs store · 947b2254
      Archit Taneja authored
      The display sysfs attribute's store function needs to be changed with the
      introduction of outputs.
      
      The DSS driver ensures that there is one display per output, and that a
      registered omap_dss_device will have an output connected to it. The display
      sysfs store function unsets the current output connected to the manager, and
      sets it with the output connected to the new display. If the new display doesn't
      have an output for some reason, we just bail out. The function doesn't set/unset
      output->device links. These remain the same as when the omap_dss_device was
      registered.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      947b2254
    • Archit Taneja's avatar
      OMAPFB: Change dssdev->manager references · 952cbaaa
      Archit Taneja authored
      To retrieve the manager pointer via a device, we need to now access it via the
      output to which the device is connected. Make this change in omapfb_ioctl()
      where the WAITFORVSYNC ioctl tries to access the manager's device.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      952cbaaa
    • Archit Taneja's avatar
      OMAPDSS: HDMI: Replace dssdev->manager with dssdev->output->manager references · cea87b92
      Archit Taneja authored
      With addition of output entities, a device connects to an output, and an output
      connects to overlay manager. Replace the dssdev->manager references with
      dssdev->output->manager to access the manager correctly.
      
      When enabling the HDMI output, check whether the output entity connected to
      display is not NULL.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      cea87b92
    • Archit Taneja's avatar
      OMAPDSS: VENC: Replace dssdev->manager with dssdev->output->manager references · 8f1f736c
      Archit Taneja authored
      With addition of output entities, a device connects to an output, and an output
      connects to overlay manager. Replace the dssdev->manager references with
      dssdev->output->manager to access the manager correctly.
      
      When enabling the VENC output, check whether the output entity connected to
      display is not NULL.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      8f1f736c
    • Archit Taneja's avatar
      OMAPDSS: RFBI: Replace dssdev->manager with dssdev->output->manager references · 1db39c0a
      Archit Taneja authored
      With addition of output entities, a device connects to an output, and an output
      connects to overlay manager. Replace the dssdev->manager references with
      dssdev->output->manager to access the manager correctly.
      
      When enabling the RFBI output, check whether the output entity connected to
      display is not NULL.
      Signed-off-by: default avatarArchit Taneja <archit@ti.com>
      1db39c0a