[PATCH 0/2] staging: bcm2835_camera: Fix pointer dependency of mmal_msg_header

Michael Zoran mzoran at crowfest.net
Wed Mar 8 21:10:08 PST 2017


This is part 1 of what I believe will be a 2 series fix to make the camera driver
work for arm64(64 bit).  

The mmal_msg_header structure has two fields which are pointer dependent(control_service
and context).  control_service isn't use by the kernel, so it's safe to change to u32.  
The context field is used heavily to store the pairing between request and reply messages.

The solution chosen was to use a mapping table as implemented by the btree library in the
kernel source to keep track of outstanding requests and associate them with an opaque u32
handle that is sent to the firmware.

Series 2 which I intend to submit latter will deal with a few pointers in what are essentialy
control message or get/set property requests on the camera.  These pointer are not used,
but the pointers do cause the offsets of other fields to change.  So it's necessary to have
a local version of the data and a remote version, and do a memberwise copy when converting
between the two.  The local version does need to have a pointer, but the pointer itself does
not need to be sent access the communication channel.

Michael Zoran (2):
  staging: bcm2835_camera: Convert control_service field of
    mmal_msg_header to u32
  staging: bcm2835_camera: Use a mapping table for context field of
    mmal_msg_header

 .../staging/vc04_services/bcm2835-camera/Kconfig   |   1 +
 .../vc04_services/bcm2835-camera/mmal-msg.h        |   4 +-
 .../vc04_services/bcm2835-camera/mmal-vchiq.c      | 176 ++++++++++++++++++---
 3 files changed, 157 insertions(+), 24 deletions(-)

-- 
2.11.0




More information about the linux-rpi-kernel mailing list