title: How does a kernel panel driver specify the xstep value
body: <p>I'm working on an LCD panel driver for an embedded device with a Atmel sama5d2 based micro-controller under Linux.</p>
  
  <p>The kernel version I'm working against is 4.4 <a href="https://github.com/linux4sam/linux-at91/tree/linux-4.4-at91" rel="nofollow">as found here</a>.</p>
  
  <p>I'm using the drivers/gpu/drm/panel/panel-lg-lg4573.c driver as a template for the one I'm writing.</p>
  
  <p>The driver comes up and integrates with the framebuffer provided by the atmel device driver as expected.</p>
  
  <p>The problem is, the image that is written to the framebuffer is reflected about the Y-axis when rendered on the LCD panel - it appears like the LCD panel rasterises the image from right to left.</p>
  
  <p>The LCD DMA doesn't seem to have any facility to deal with this (i.e. setting a negative address increment value etc).</p>
  
  <p>In a nutshell:</p>
  
  <ol>
  <li>The FB driver exposes a memory area to blit images onto</li>
  <li>The peripheral DMAs the content of this memory directly to the LCD data bus</li>
  <li>The LCD panel displays the image reflected - mirrored - across the Y-axis</li>
  </ol>
  
  <p>So the question is, how is this sort of thing normally handled? I would imagine that this sort of interface issues would be fairly common?</p>