We will soon have support for a palette mode,
which can replicate the RGB233 mode if required,
or any custom arrangement of bits per color.
Furthermore, the RGB233 mode did not work correctly
in this state, as we did not implement swapping of
the 32 bit words.
This reverts the following commits:
58de0a5bcc3f44f8fc22b82303f44f
I've decided to provide a separate pointer for a raw buffer in case the
library user comes up with a non-RGB332 use case that avoids byte
rearrangement (and copying should be replaced with pulling from the
user's pointer in this case)
Some people on the mailing list reported that with older kernels
setting interface 0 altsetting 1 does not work, fall back to the
old behavior in this case for now, while still investigating the
root cause of this problem.
This makes osmo-fl2k work again with Linux 5.5.0-rc6 or later,
as the FL2000 shares the endpoints for interface 0 and 1, which
is forbidden by the USB spec and the Kernel will not ignore this
anymore.
See: https://marc.info/?l=linux-usb&m=157944230213296&w=2
warning: absolute value function ‘fabsf’ given an argument of
type ‘double’ but has parameter of type ‘float’ which may cause
truncation of value
warning: ‘__builtin_strncpy’ specified bound 64 equals destination
size
This fixes a segfault when exiting, as sometimes it occured that
the USB worker thread completed before the sample worker thread,
and the buffers the latter was still accessing had already been
freed.
The Linux Kernel has a bug on ARM/ARM64 systems where the USB CMA
memory is incorrectly mapped to userspace, breaking zerocopy.
When the Kernel allocates the memory, it clears it with memset().
If the mapping worked correctly, we should have zeroed out buffers,
if it doesn't, we get random Kernel memory. We now check for this,
and fall back to buffers in userspace if that's the case.
Signed-off-by: Steve Markgraf <steve@steve-m.de>
This avoids the following compiler warnings when using more recent
versions of libusb:
src/libosmo-fl2k.c:384:2: warning: ‘libusb_set_debug’ is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
libusb_set_debug(dev->ctx, 3);
^~~~~~~~~~~~~~~~
Details can be found at 539f22e2fd