1. 25 Feb, 2022 12 commits
  2. 24 Feb, 2022 7 commits
  3. 23 Feb, 2022 9 commits
  4. 22 Feb, 2022 1 commit
  5. 21 Feb, 2022 6 commits
  6. 20 Feb, 2022 2 commits
    • Lucas De Marchi's avatar
      iosys-map: Add a few more helpers · e62f25e8
      Lucas De Marchi authored
      First the simplest ones:
      
      	- iosys_map_memset(): when abstracting system and I/O memory,
      	  just like the memcpy() use case, memset() also has dedicated
      	  functions to be called for using IO memory.
      	- iosys_map_memcpy_from(): we may need to copy data from I/O
      	  memory, not only to.
      
      In certain situations it's useful to be able to read or write to an
      offset that is calculated by having the memory layout given by a struct
      declaration. Usually we are going to read/write a u8, u16, u32 or u64.
      
      As a pre-requisite for the implementation, add iosys_map_memcpy_from()
      to be the equivalent of iosys_map_memcpy_to(), but in the other
      direction. Then add 2 pairs of macros:
      
      	- iosys_map_rd() / iosys_map_wr()
      	- iosys_map_rd_field() / iosys_map_wr_field()
      
      The first pair takes the C-type and offset to read/write. The second
      pair uses a struct describing the layout of the mapping in order to
      calculate the offset and size being read/written.
      
      We could use readb, readw, readl, readq and the write* counterparts,
      however due to alignment issues this may not work on all architectures.
      If alignment needs to be checked to call the right function, it's not
      possible to decide at compile-time which function to call: so just leave
      the decision to the memcpy function that will do exactly that.
      
      Finally, in order to use the above macros with a map derived from
      another, add another initializer: IOSYS_MAP_INIT_OFFSET().
      
      v2:
        - Rework IOSYS_MAP_INIT_OFFSET() so it doesn't rely on aliasing rules
          within the union
        - Add offset to both iosys_map_rd_field() and iosys_map_wr_field() to
          allow the struct itself to be at an offset from the mapping
        - Add documentation to iosys_map_rd_field() with example and expected
          memory layout
      v3:
        - Drop kernel.h include as it's not needed anymore
      
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
      Cc: dri-devel@lists.freedesktop.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Reviewed-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
      Reviewed-by: default avatarMatt Atwood <matthew.s.atwood@intel.com>
      Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-3-lucas.demarchi@intel.com
      e62f25e8
    • Lucas De Marchi's avatar
      iosys-map: Add offset to iosys_map_memcpy_to() · cccd73d6
      Lucas De Marchi authored
      In certain situations it's useful to be able to write to an
      offset of the mapping. Add a dst_offset to iosys_map_memcpy_to().
      
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: dri-devel@lists.freedesktop.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220216174147.3073235-2-lucas.demarchi@intel.com
      cccd73d6
  7. 19 Feb, 2022 3 commits