Commit 3e737e39 authored by Kieran Bingham's avatar Kieran Bingham Committed by Mauro Carvalho Chehab

media: vsp1: use kernel __packed for structures

The kernel provides a __packed definition to abstract away from the
compiler specific attributes tag.

Convert all packed structures in VSP1 to use it.

The GCC documentation [0] describes this attribute as "the structure or
union is placed to minimize the memory required".

The Keil compiler documentation at [1] warns that the use of this
attribute can cause a performance penalty in the event that the compiler
can not deduce the allignment of each field.

Careful examination of the object code generated both with and without
this attribute shows that these structures are accessed identically and
are not affected by any performance penalty. The structures are
correctly aligned and padded to match the needs of the hardware already.

This patch does not serve to make a decision as to the use of the
attribute, but purely to clean up the code to use the kernel defined
abstraction as per [2].

[0] https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-packed-type-attribute
[1] http://www.keil.com/support/man/docs/armcc/armcc_chr1359124230195.htm
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/compiler-gcc.h?h=v4.16-rc5#n92Signed-off-by: default avatarKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 3c56b2cc
...@@ -25,19 +25,19 @@ ...@@ -25,19 +25,19 @@
struct vsp1_dl_header_list { struct vsp1_dl_header_list {
u32 num_bytes; u32 num_bytes;
u32 addr; u32 addr;
} __attribute__((__packed__)); } __packed;
struct vsp1_dl_header { struct vsp1_dl_header {
u32 num_lists; u32 num_lists;
struct vsp1_dl_header_list lists[8]; struct vsp1_dl_header_list lists[8];
u32 next_header; u32 next_header;
u32 flags; u32 flags;
} __attribute__((__packed__)); } __packed;
struct vsp1_dl_entry { struct vsp1_dl_entry {
u32 addr; u32 addr;
u32 data; u32 data;
} __attribute__((__packed__)); } __packed;
/** /**
* struct vsp1_dl_body - Display list body * struct vsp1_dl_body - Display list body
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment