Abdelatif Guettouche has submitted the ICLA and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Sebastien Lorquet has submitted the ICLA and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Alan Carvalho de Assis has submitted the ICLA and we can migrate the licenses
to Apache.
Uniquix Ltda. has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Several files were missed in the past
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Previous fix to RNDIS response queueing caused unaligned access
to response buffer in some configurations. On ARM Cortex-M, this
would cause hardfault if optimizer used strd instruction.
Fix by allocating the buffer as uint32_t. RNDIS messages are always
a multiple of 4 bytes in size, so this ensures alignment.
Gracefully handle output queue full conditions. This shouldn't happen
in practice as the host is supposed to limit the number of commands
simultaneously in execution.
Reset the response queue on RNDIS_RESET_MSG. This way communication
can recover even if host and device get out of sync.
Sometimes Windows would send RNDIS_KEEPALIVE_MSG and RNDIS_QUERY_MSG close
to each other. This would cause the latter command to overwrite the reply for
the prior command. This in turn will cause Windows to drop the connection after
a 20 second timeout.
Easy way to reproduce the issue is to open the Windows "Adapter Status" dialog that
shows the realtime TX/RX byte counts. This causes multiple RNDIS_QUERY_MSGs per
second, and the connection will drop in less than an hour.
This commit fixes this issue, and other potential race conditions (such as USB
descriptor read in middle on RNDIS query) by using a separate queue for the reply
packets.
David Sidrane has submitted the ICL and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
David S. Alessio has submitted the ICL and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Sebastien Lorquet has submitted the ICL and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
drivers/sensors/qencoder.c:
* qe_close(): Call to sninfo() contained extraneous "%d"
format specifier. Removing it, as it appears there was
never a matching argument.
Because buflen is size_t (unsigned) and nsent is ssize_t (signed)
of the same size, (buflen - nsent) results in unsigned and
overflows if nsent > buflen.
This happens when sending CAN FD frame with DLC > 8 and a user
gets the buflen parameter as a result of CAN_MSGLEN(len)
where `len' is the size of data which is less then a size
for some extended DLC (e.g. 26 bytes is sent in a message with
DLC 0xD, which has 32 bytes of data).
The correct buflen value should be rather
CAN_MSGLEN(can_dlc2bytes(can_bytes2dlc(len)))
Signed-off-by: Jaroslav Beran <jara.beran@gmail.com>
Alan Carvalho de Assis has submitted the SGA and we can migrate the licenses
to Apache.
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
mmcsd:Remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
stm32h7:sdmmc remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
stm32f7:sdmmc remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
stm32f7:sdmmc WRITE COMPLETE prevent false triggers
stm32h7:sdmmc WRITE COMPLETE prevent false triggers
While testing PR #2989 on the H7 I noticed that the cards
were staying in 1-bit mode. The root cause was that the
scr read path was using DMA without an invlidate.
This was caused by CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT,
but the sdmmc driver, did not use the delayed invalidate
nor would it work on 8 bytes.
The driver fully supported dcache mgt on runt buffers, but
the #ifdef CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT blocked it.
Reviewing the PR that added CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
it may have been valid at the time. But after the dcache operations
we fixed. It is not necessary and offers no benefit.
serial/serial_dma.c: In function ‘uart_recvchars_done’:
serial/serial_dma.c:407:7: warning: implicit declaration of function ‘nxsig_kill’ [-Wimplicit-function-declaration]
407 | nxsig_kill(dev->pid, signo);
| ^~~~~~~~~~
Change-Id: I9e1c0341ecce3033889d11fff9ec2b9e3dfe303b
user should select the default action by self:
warning: (TTY_SIGINT) selects SIG_SIGKILL_ACTION which has unmet direct dependencies (SIG_DEFAULT)
Change-Id: Ied9899d18156742ce4998b40d53a481262dcd84a
Signed-off-by: ligd <liguiding1@xiaomi.com>
Reason:
nx_start use syslog at every early time event the idle thread not
full setup, then syslog_rpmsg -> work_queue -> work_signal ->
nxsig_kill -> rtcb is NULL -> crash
Fix:
sched work_queue after is_rpmsg_ept_ready() is true
Change-Id: I225469ff2526e4b810bf3e23473b55d57e64a1ff
Signed-off-by: ligd <liguiding1@xiaomi.com>
since sometime platform code need do some special action during memcpy
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Id108ef4232376feab3e37e9b3aee9a7927a03bd4
and remove the reference of CONFIG_ARCH_HAVE_PROGMEM from code
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I89a73f138d54718ee8bc9345958675d7a2a34ba8
This change reflects that the geometry isn't related to the largest
allocatable unit on the platform.
Calls to read and write block devices are also affected and have
been updated.
Summary:
- This commit introduces a driver-specific spinlock to cxd56.c
to improve performance in SMP mode.
Impact:
- cxd56.c in SMP mode only
Testing:
- Tested with nxplayer and nxrecorder with the following configs
- spresense:wifi, spresense:wifi_smp
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- This commit changes spinlock APIs (spin_lock_irqsave/spin_unlock_irqrestore)
- In the previous implementation, the global spinlock (i.e. g_irq_spin) was used.
- This commit allows to use caller specific spinlock but also supports to use
g_irq_spin for backword compatibility (In this case, NULL must be specified)
Impact:
- None
Testing:
- Tested with the following configurations
- spresnse:wifi, spresense:wifi_smp
- esp32-devkitc:smp (QEMU), sabre6-quad:smp (QEMU)
- maxi-bit:smp (QEMU), sim:smp
- stm32f4discovery:wifi
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- During Wi-Fi stress test, I noticed that ASSERT() happened
in gs2200m_hal_write(). Actually, this happens in 20-40 hours.
- In this case, resp[1] was always 0x0 which is not defined
in the spec.
- In the previous implementation, retry was only done in case of
WR_RESP_NOK. (0x13)
- This commit changes this condition and it reties in case of
0x0 as well
Impact:
- gs2200m driver
Testing:
- Tested with spresense:wifi_smp and stm32f4discovery:wifi
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
The ifstate is already set in
enc_ifup -> enc_reset -> enc_linkstatus
The ifstate after this call is either ENCSTATE_RUNNING or ENCSTATE_UP
If ifstate is ENCSTATE_RUNNING, it would be wrong to set it to ENCSTATE_UP;
this would lead to enc_txavail never invoking the driver callback, causing
very long latencies in sending.
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
Summary:
- During reviewing the GS2200M document, I noticed that
_read_data() implementation is incorrect.
- Actually, we do not use "SPI Byte Stuffing for SPI-NO-DMA"
but use "SPI Command Response (SPI-DMA)", so the sequence
should use SPI_RECVBLOCK().
Impact:
- gs2200m.c only
Testing:
- Tested with stm32f4discovery:wifi and spresense:wifi_smp
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- I noticed that some error messages are printed with wlinfo()
- This commit prints such error messages with wlerr()
Impact:
- No impact
Testing:
- Tested with spresense:wifi
- NOTE: CONFIG_DEBUG_WIRELESS_ERROR must be enabled
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- During stress test with spresense:wifi (non-SMP), I noticed
sometimes ASSERT() happened in _read_data_len()
- Actually, up_udelay(50) has been added to avoid the ASSERT
- However, I finally noticed that it should be moved before
calling dready()
- Also, I cofirmed that we can reduced the time from 50 to 30
- NOTE: we need at least 15us in my experience
Impact:
- gs2200m.c only
Testing:
- Tested with following configurations
- spresense:wifi, spresense:wifi_smp, stm32f4discovery:wifi
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Squashed commits:
Fix small typos on efuse driver
Fix nxstyle issues
Fix aligment and missing FAR
Improvements to efuse driver
Fix: don't free 'lower' on efuse_unregister
Describe the efuse_param
Remove upper pointer from lowerhalt
Fix blank line at end of function
Co-authored-by: saramonteiro <saramonteirosouza44@gmail.com>
Co-authored-by: Xiang Xiao <xiaoxiang@xiaomi.com>
these functions are the implementation detail and then
don't need expose to external
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ief832391d5b42d1f1645907eb465631650490234
let's replace the content of file in place instead
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I538910d55815c7aec656c05dba4eab2fa1d6d964
so pty don't need call nx_pipe and then file_detach
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ibb8d108abd76bafe53897e5fca35babcf3e1bae9
"event & POLLOUT"(not "event | POLLOUT") should be used to check POLLOUT is set
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I09af7669a1c8ee46118b904d2c5946ecb99e6215
Summary:
- This commit replaces SHES related headers in gs2200m.c
Impact:
- No impact
Testing:
- Build check only
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
It's not necessary to send a reset pulse after sending the RGB data
since the first thing that a new transmission does is sending the long
reset pulse. I have left 1 reset byte after the RGB data to keep some
padding given that the bits inside the byte are shifted by 1 bit although
I think it wouldn't be necessary either. But just in case.
This reduces the memory usage (you can easily save 60 bytes) and increases
the maximum refresh rate.
Previously only 4 MHz and 8 MHz were allowed. Given the tolerance
allowed in the WS2812 timing spec, frequency ranges around those
two can be used too which is useful for boards in which it is
difficult to generate those specific frequencies.
The following nxstyle errors are left because i'm not sure
how they should be fixed.
These are initializers like:
{0xff, 0x00}, {0x2c, 0xff}, {0x2e, 0xdf}, {0xff, 0x01}, {0x3c, 0x32},
{0x11, 0x00}, {0x09, 0x02}, {0x04, 0x28}, {0x13, 0xe5}, {0x14, 0x48},
{0x2c, 0x0c}, {0x33, 0x78}, {0x3a, 0x33}, {0x3b, 0xfb}, {0x3e, 0x00},
{0x43, 0x11}, {0x16, 0x10}, {0x39, 0x02}, {0x35, 0x88}, {0x22, 0x0a},
drivers/video/ov2640.c:309:16: error: Left bracket not on separate line
drivers/video/ov2640.c:318:17: error: Left bracket not on separate line
drivers/video/ov2640.c:318:32: error: Left bracket not on separate line
drivers/video/ov2640.c:318:47: error: Left bracket not on separate line
drivers/video/ov2640.c:318:62: error: Left bracket not on separate line
drivers/video/ov2640.c:319:17: error: Left bracket not on separate line
drivers/video/ov2640.c:319:32: error: Left bracket not on separate line
drivers/video/ov2640.c:319:47: error: Left bracket not on separate line
drivers/video/ov2640.c:319:62: error: Left bracket not on separate line
drivers/video/ov2640.c:320:17: error: Left bracket not on separate line
drivers/video/ov2640.c:320:32: error: Left bracket not on separate line
drivers/video/ov2640.c:320:47: error: Left bracket not on separate line
drivers/video/ov2640.c:320:62: error: Left bracket not on separate line
drivers/video/ov2640.c:321:17: error: Left bracket not on separate line
drivers/video/ov2640.c:321:32: error: Left bracket not on separate line
drivers/video/ov2640.c:321:47: error: Left bracket not on separate line
drivers/video/ov2640.c:321:62: error: Left bracket not on separate line
drivers/video/ov2640.c:322:17: error: Left bracket not on separate line
drivers/video/ov2640.c:322:32: error: Left bracket not on separate line
drivers/video/ov2640.c:322:47: error: Left bracket not on separate line
drivers/video/ov2640.c:322:62: error: Left bracket not on separate line
drivers/video/ov2640.c:323:17: error: Left bracket not on separate line
drivers/video/ov2640.c:323:32: error: Left bracket not on separate line
drivers/video/ov2640.c:323:47: error: Left bracket not on separate line
drivers/video/ov2640.c:323:62: error: Left bracket not on separate line
drivers/video/ov2640.c:324:17: error: Left bracket not on separate line
drivers/video/ov2640.c:324:32: error: Left bracket not on separate line
drivers/video/ov2640.c:324:47: error: Left bracket not on separate line
drivers/video/ov2640.c:324:62: error: Left bracket not on separate line
drivers/video/ov2640.c:325:17: error: Left bracket not on separate line
drivers/video/ov2640.c:325:32: error: Left bracket not on separate line
drivers/video/ov2640.c:325:47: error: Left bracket not on separate line
drivers/video/ov2640.c:325:62: error: Left bracket not on separate line
drivers/video/ov2640.c:326:17: error: Left bracket not on separate line
drivers/video/ov2640.c:326:32: error: Left bracket not on separate line
drivers/video/ov2640.c:326:47: error: Left bracket not on separate line
drivers/video/ov2640.c:326:62: error: Left bracket not on separate line
drivers/video/ov2640.c:327:17: error: Left bracket not on separate line
drivers/video/ov2640.c:327:32: error: Left bracket not on separate line
drivers/video/ov2640.c:327:47: error: Left bracket not on separate line
drivers/video/ov2640.c:327:62: error: Left bracket not on separate line
drivers/video/ov2640.c:328:17: error: Left bracket not on separate line
drivers/video/ov2640.c:328:32: error: Left bracket not on separate line
drivers/video/ov2640.c:328:47: error: Left bracket not on separate line
drivers/video/ov2640.c:328:62: error: Left bracket not on separate line
drivers/video/ov2640.c:329:17: error: Left bracket not on separate line
drivers/video/ov2640.c:329:32: error: Left bracket not on separate line
drivers/video/ov2640.c:329:47: error: Left bracket not on separate line
drivers/video/ov2640.c:329:62: error: Left bracket not on separate line
drivers/video/ov2640.c:330:17: error: Left bracket not on separate line
drivers/video/ov2640.c:330:32: error: Left bracket not on separate line
drivers/video/ov2640.c:330:47: error: Left bracket not on separate line
drivers/video/ov2640.c:330:62: error: Left bracket not on separate line
drivers/video/ov2640.c:331:17: error: Left bracket not on separate line
drivers/video/ov2640.c:331:32: error: Left bracket not on separate line
drivers/video/ov2640.c:331:47: error: Left bracket not on separate line
drivers/video/ov2640.c:331:62: error: Left bracket not on separate line
drivers/video/ov2640.c:332:17: error: Left bracket not on separate line
drivers/video/ov2640.c:332:32: error: Left bracket not on separate line
drivers/video/ov2640.c:332:47: error: Left bracket not on separate line
drivers/video/ov2640.c:332:62: error: Left bracket not on separate line
drivers/video/ov2640.c:333:17: error: Left bracket not on separate line
drivers/video/ov2640.c:333:32: error: Left bracket not on separate line
drivers/video/ov2640.c:333:47: error: Left bracket not on separate line
drivers/video/ov2640.c:333:62: error: Left bracket not on separate line
drivers/video/ov2640.c:334:17: error: Left bracket not on separate line
drivers/video/ov2640.c:334:32: error: Left bracket not on separate line
drivers/video/ov2640.c:334:47: error: Left bracket not on separate line
drivers/video/ov2640.c:334:62: error: Left bracket not on separate line
drivers/video/ov2640.c:335:17: error: Left bracket not on separate line
drivers/video/ov2640.c:335:32: error: Left bracket not on separate line
drivers/video/ov2640.c:335:47: error: Left bracket not on separate line
drivers/video/ov2640.c:335:62: error: Left bracket not on separate line
drivers/video/ov2640.c:336:17: error: Left bracket not on separate line
drivers/video/ov2640.c:336:32: error: Left bracket not on separate line
drivers/video/ov2640.c:336:47: error: Left bracket not on separate line
drivers/video/ov2640.c:336:62: error: Left bracket not on separate line
drivers/video/ov2640.c:337:17: error: Left bracket not on separate line
drivers/video/ov2640.c:337:32: error: Left bracket not on separate line
drivers/video/ov2640.c:337:47: error: Left bracket not on separate line
drivers/video/ov2640.c:337:62: error: Left bracket not on separate line
drivers/video/ov2640.c:338:17: error: Left bracket not on separate line
drivers/video/ov2640.c:338:32: error: Left bracket not on separate line
drivers/video/ov2640.c:338:47: error: Left bracket not on separate line
drivers/video/ov2640.c:338:62: error: Left bracket not on separate line
drivers/video/ov2640.c:339:17: error: Left bracket not on separate line
drivers/video/ov2640.c:339:32: error: Left bracket not on separate line
drivers/video/ov2640.c:339:47: error: Left bracket not on separate line
drivers/video/ov2640.c:339:62: error: Left bracket not on separate line
drivers/video/ov2640.c:340:17: error: Left bracket not on separate line
drivers/video/ov2640.c:340:32: error: Left bracket not on separate line
drivers/video/ov2640.c:340:47: error: Left bracket not on separate line
drivers/video/ov2640.c:340:62: error: Left bracket not on separate line
drivers/video/ov2640.c:341:17: error: Left bracket not on separate line
drivers/video/ov2640.c:341:32: error: Left bracket not on separate line
drivers/video/ov2640.c:341:47: error: Left bracket not on separate line
drivers/video/ov2640.c:341:62: error: Left bracket not on separate line
drivers/video/ov2640.c:342:17: error: Left bracket not on separate line
drivers/video/ov2640.c:342:32: error: Left bracket not on separate line
drivers/video/ov2640.c:342:47: error: Left bracket not on separate line
drivers/video/ov2640.c:342:62: error: Left bracket not on separate line
drivers/video/ov2640.c:343:17: error: Left bracket not on separate line
drivers/video/ov2640.c:343:32: error: Left bracket not on separate line
drivers/video/ov2640.c:343:47: error: Left bracket not on separate line
drivers/video/ov2640.c:343:62: error: Left bracket not on separate line
drivers/video/ov2640.c:344:17: error: Left bracket not on separate line
drivers/video/ov2640.c:344:32: error: Left bracket not on separate line
drivers/video/ov2640.c:344:47: error: Left bracket not on separate line
drivers/video/ov2640.c:344:62: error: Left bracket not on separate line
drivers/video/ov2640.c:345:17: error: Left bracket not on separate line
drivers/video/ov2640.c:345:32: error: Left bracket not on separate line
drivers/video/ov2640.c:345:47: error: Left bracket not on separate line
drivers/video/ov2640.c:345:62: error: Left bracket not on separate line
drivers/video/ov2640.c:346:17: error: Left bracket not on separate line
drivers/video/ov2640.c:346:32: error: Left bracket not on separate line
drivers/video/ov2640.c:346:47: error: Left bracket not on separate line
drivers/video/ov2640.c:346:62: error: Left bracket not on separate line
drivers/video/ov2640.c:347:17: error: Left bracket not on separate line
drivers/video/ov2640.c:347:32: error: Left bracket not on separate line
drivers/video/ov2640.c:347:47: error: Left bracket not on separate line
drivers/video/ov2640.c:347:62: error: Left bracket not on separate line
drivers/video/ov2640.c:348:17: error: Left bracket not on separate line
drivers/video/ov2640.c:348:32: error: Left bracket not on separate line
drivers/video/ov2640.c:348:47: error: Left bracket not on separate line
drivers/video/ov2640.c:348:62: error: Left bracket not on separate line
drivers/video/ov2640.c:349:17: error: Left bracket not on separate line
drivers/video/ov2640.c:349:32: error: Left bracket not on separate line
drivers/video/ov2640.c:349:47: error: Left bracket not on separate line
drivers/video/ov2640.c:349:62: error: Left bracket not on separate line
drivers/video/ov2640.c:350:17: error: Left bracket not on separate line
drivers/video/ov2640.c:350:32: error: Left bracket not on separate line
drivers/video/ov2640.c:350:47: error: Left bracket not on separate line
drivers/video/ov2640.c:350:62: error: Left bracket not on separate line
drivers/video/ov2640.c:351:17: error: Left bracket not on separate line
drivers/video/ov2640.c:351:32: error: Left bracket not on separate line
drivers/video/ov2640.c:351:47: error: Left bracket not on separate line
drivers/video/ov2640.c:351:62: error: Left bracket not on separate line
drivers/video/ov2640.c:359:17: error: Left bracket not on separate line
drivers/video/ov2640.c:359:32: error: Left bracket not on separate line
drivers/video/ov2640.c:359:47: error: Left bracket not on separate line
drivers/video/ov2640.c:359:62: error: Left bracket not on separate line
drivers/video/ov2640.c:360:17: error: Left bracket not on separate line
drivers/video/ov2640.c:360:32: error: Left bracket not on separate line
drivers/video/ov2640.c:360:47: error: Left bracket not on separate line
drivers/video/ov2640.c:360:62: error: Left bracket not on separate line
drivers/video/ov2640.c:368:17: error: Left bracket not on separate line
drivers/video/ov2640.c:368:32: error: Left bracket not on separate line
drivers/video/ov2640.c:368:47: error: Left bracket not on separate line
drivers/video/ov2640.c:368:62: error: Left bracket not on separate line
drivers/video/ov2640.c:376:17: error: Left bracket not on separate line
drivers/video/ov2640.c:376:32: error: Left bracket not on separate line
drivers/video/ov2640.c:376:47: error: Left bracket not on separate line
drivers/video/ov2640.c:376:62: error: Left bracket not on separate line
drivers/video/ov2640.c:384:17: error: Left bracket not on separate line
drivers/video/ov2640.c:384:32: error: Left bracket not on separate line
drivers/video/ov2640.c:384:47: error: Left bracket not on separate line
drivers/video/ov2640.c:384:62: error: Left bracket not on separate line
drivers/video/ov2640.c:392:17: error: Left bracket not on separate line
drivers/video/ov2640.c:392:32: error: Left bracket not on separate line
drivers/video/ov2640.c:392:47: error: Left bracket not on separate line
drivers/video/ov2640.c:392:62: error: Left bracket not on separate line
drivers/video/ov2640.c:400:17: error: Left bracket not on separate line
drivers/video/ov2640.c:400:32: error: Left bracket not on separate line
drivers/video/ov2640.c:400:47: error: Left bracket not on separate line
drivers/video/ov2640.c:400:62: error: Left bracket not on separate line
drivers/video/ov2640.c:408:17: error: Left bracket not on separate line
drivers/video/ov2640.c:408:32: error: Left bracket not on separate line
drivers/video/ov2640.c:408:47: error: Left bracket not on separate line
drivers/video/ov2640.c:408:62: error: Left bracket not on separate line
drivers/video/ov2640.c:409:17: error: Left bracket not on separate line
drivers/video/ov2640.c:416:17: error: Left bracket not on separate line
drivers/video/ov2640.c:416:32: error: Left bracket not on separate line
drivers/video/ov2640.c:416:47: error: Left bracket not on separate line
drivers/video/ov2640.c:416:62: error: Left bracket not on separate line
drivers/video/ov2640.c:417:17: error: Left bracket not on separate line
drivers/video/ov2640.c:417:32: error: Left bracket not on separate line
drivers/video/ov2640.c:424:17: error: Left bracket not on separate line
drivers/video/ov2640.c:424:32: error: Left bracket not on separate line
drivers/video/ov2640.c:424:47: error: Left bracket not on separate line
drivers/video/ov2640.c:424:62: error: Left bracket not on separate line
drivers/video/ov2640.c:425:17: error: Left bracket not on separate line
drivers/video/ov2640.c:425:32: error: Left bracket not on separate line
drivers/video/ov2640.c:437:17: error: Left bracket not on separate line
drivers/video/ov2640.c:444:17: error: Left bracket not on separate line
drivers/video/ov2640.c:444:32: error: Left bracket not on separate line
drivers/video/ov2640.c:444:47: error: Left bracket not on separate line
drivers/video/ov2640.c:444:62: error: Left bracket not on separate line
drivers/video/ov2640.c:452:17: error: Left bracket not on separate line
drivers/video/ov2640.c:452:32: error: Left bracket not on separate line
drivers/video/ov2640.c:452:47: error: Left bracket not on separate line
drivers/video/ov2640.c:464:17: error: Left bracket not on separate line
drivers/video/ov2640.c:464:32: error: Left bracket not on separate line
drivers/video/ov2640.c:464:47: error: Left bracket not on separate line
drivers/video/ov2640.c:464:62: error: Left bracket not on separate line
drivers/video/ov2640.c:465:17: error: Left bracket not on separate line
drivers/video/ov2640.c:465:32: error: Left bracket not on separate line
drivers/video/ov2640.c:465:47: error: Left bracket not on separate line
drivers/video/ov2640.c:465:62: error: Left bracket not on separate line
drivers/video/ov2640.c:466:17: error: Left bracket not on separate line
drivers/video/ov2640.c:466:32: error: Left bracket not on separate line
drivers/video/ov2640.c:466:47: error: Left bracket not on separate line
drivers/video/ov2640.c:466:62: error: Left bracket not on separate line
drivers/video/ov2640.c:467:17: error: Left bracket not on separate line
drivers/video/ov2640.c:467:32: error: Left bracket not on separate line
drivers/video/ov2640.c:467:47: error: Left bracket not on separate line
drivers/video/ov2640.c:467:62: error: Left bracket not on separate line
drivers/video/ov2640.c:468:17: error: Left bracket not on separate line
drivers/video/ov2640.c:468:32: error: Left bracket not on separate line
drivers/video/ov2640.c:468:47: error: Left bracket not on separate line
drivers/video/ov2640.c:468:62: error: Left bracket not on separate line
drivers/video/ov2640.c:469:17: error: Left bracket not on separate line
drivers/video/ov2640.c:469:32: error: Left bracket not on separate line
drivers/video/ov2640.c:469:47: error: Left bracket not on separate line
drivers/video/ov2640.c:469:62: error: Left bracket not on separate line
drivers/video/ov2640.c:470:17: error: Left bracket not on separate line
drivers/video/ov2640.c:470:32: error: Left bracket not on separate line
drivers/video/ov2640.c:470:47: error: Left bracket not on separate line
drivers/video/ov2640.c:470:62: error: Left bracket not on separate line
drivers/video/ov2640.c:471:17: error: Left bracket not on separate line
drivers/video/ov2640.c:471:32: error: Left bracket not on separate line
drivers/video/ov2640.c:471:47: error: Left bracket not on separate line
drivers/video/ov2640.c:471:62: error: Left bracket not on separate line
drivers/video/ov2640.c:472:17: error: Left bracket not on separate line
drivers/video/ov2640.c:472:32: error: Left bracket not on separate line
drivers/video/ov2640.c:472:47: error: Left bracket not on separate line
drivers/video/ov2640.c:472:62: error: Left bracket not on separate line
drivers/video/ov2640.c:473:17: error: Left bracket not on separate line
drivers/video/ov2640.c:473:32: error: Left bracket not on separate line
drivers/video/ov2640.c:473:47: error: Left bracket not on separate line
drivers/video/ov2640.c:473:62: error: Left bracket not on separate line
drivers/video/ov2640.c:474:17: error: Left bracket not on separate line
drivers/video/ov2640.c:474:32: error: Left bracket not on separate line
drivers/video/ov2640.c:474:47: error: Left bracket not on separate line
drivers/video/ov2640.c:474:62: error: Left bracket not on separate line
drivers/video/ov2640.c:475:17: error: Left bracket not on separate line
drivers/video/ov2640.c:475:32: error: Left bracket not on separate line
drivers/video/ov2640.c:475:47: error: Left bracket not on separate line
drivers/video/ov2640.c:475:62: error: Left bracket not on separate line
drivers/video/ov2640.c:476:17: error: Left bracket not on separate line
drivers/video/ov2640.c:476:32: error: Left bracket not on separate line
drivers/video/ov2640.c:476:47: error: Left bracket not on separate line
drivers/video/ov2640.c:476:62: error: Left bracket not on separate line
drivers/video/ov2640.c:477:17: error: Left bracket not on separate line
drivers/video/ov2640.c:477:32: error: Left bracket not on separate line
drivers/video/ov2640.c:477:47: error: Left bracket not on separate line
drivers/video/ov2640.c:477:62: error: Left bracket not on separate line
drivers/video/ov2640.c:478:17: error: Left bracket not on separate line
drivers/video/ov2640.c:478:32: error: Left bracket not on separate line
drivers/video/ov2640.c:478:47: error: Left bracket not on separate line
drivers/video/ov2640.c:478:62: error: Left bracket not on separate line
drivers/video/ov2640.c:479:17: error: Left bracket not on separate line
drivers/video/ov2640.c:479:32: error: Left bracket not on separate line
drivers/video/ov2640.c:479:47: error: Left bracket not on separate line
drivers/video/ov2640.c:479:62: error: Left bracket not on separate line
drivers/video/ov2640.c:480:17: error: Left bracket not on separate line
drivers/video/ov2640.c:480:32: error: Left bracket not on separate line
drivers/video/ov2640.c:480:47: error: Left bracket not on separate line
drivers/video/ov2640.c:480:62: error: Left bracket not on separate line
drivers/video/ov2640.c:481:17: error: Left bracket not on separate line
drivers/video/ov2640.c:481:32: error: Left bracket not on separate line
drivers/video/ov2640.c:481:47: error: Left bracket not on separate line
drivers/video/ov2640.c:481:62: error: Left bracket not on separate line
drivers/video/ov2640.c:482:17: error: Left bracket not on separate line
drivers/video/ov2640.c:482:32: error: Left bracket not on separate line
drivers/video/ov2640.c:482:47: error: Left bracket not on separate line
drivers/video/ov2640.c:482:62: error: Left bracket not on separate line
drivers/video/ov2640.c:483:17: error: Left bracket not on separate line
drivers/video/ov2640.c:483:32: error: Left bracket not on separate line
drivers/video/ov2640.c:483:47: error: Left bracket not on separate line
drivers/video/ov2640.c:483:62: error: Left bracket not on separate line
drivers/video/ov2640.c:484:17: error: Left bracket not on separate line
drivers/video/ov2640.c:484:32: error: Left bracket not on separate line
drivers/video/ov2640.c:484:47: error: Left bracket not on separate line
drivers/video/ov2640.c:484:62: error: Left bracket not on separate line
drivers/video/ov2640.c:485:17: error: Left bracket not on separate line
drivers/video/ov2640.c:485:32: error: Left bracket not on separate line
drivers/video/ov2640.c:485:47: error: Left bracket not on separate line
drivers/video/ov2640.c:485:62: error: Left bracket not on separate line
drivers/video/ov2640.c:486:17: error: Left bracket not on separate line
drivers/video/ov2640.c:486:32: error: Left bracket not on separate line
drivers/video/ov2640.c:486:47: error: Left bracket not on separate line
drivers/video/ov2640.c:486:62: error: Left bracket not on separate line
drivers/video/ov2640.c:487:17: error: Left bracket not on separate line
drivers/video/ov2640.c:487:32: error: Left bracket not on separate line
drivers/video/ov2640.c:487:47: error: Left bracket not on separate line
drivers/video/ov2640.c:487:62: error: Left bracket not on separate line
drivers/video/ov2640.c:488:17: error: Left bracket not on separate line
drivers/video/ov2640.c:488:32: error: Left bracket not on separate line
drivers/video/ov2640.c:488:47: error: Left bracket not on separate line
drivers/video/ov2640.c:488:62: error: Left bracket not on separate line
drivers/video/ov2640.c:489:17: error: Left bracket not on separate line
drivers/video/ov2640.c:489:32: error: Left bracket not on separate line
drivers/video/ov2640.c:489:47: error: Left bracket not on separate line
drivers/video/ov2640.c:489:62: error: Left bracket not on separate line
drivers/video/ov2640.c:490:17: error: Left bracket not on separate line
drivers/video/ov2640.c:490:32: error: Left bracket not on separate line
drivers/video/ov2640.c:490:47: error: Left bracket not on separate line
drivers/video/ov2640.c:490:62: error: Left bracket not on separate line
drivers/video/ov2640.c:491:17: error: Left bracket not on separate line
drivers/video/ov2640.c:491:32: error: Left bracket not on separate line
drivers/video/ov2640.c:491:47: error: Left bracket not on separate line
drivers/video/ov2640.c:491:62: error: Left bracket not on separate line
drivers/video/ov2640.c:492:17: error: Left bracket not on separate line
drivers/video/ov2640.c:492:32: error: Left bracket not on separate line
drivers/video/ov2640.c:492:47: error: Left bracket not on separate line
drivers/video/ov2640.c:492:62: error: Left bracket not on separate line
drivers/video/ov2640.c:493:17: error: Left bracket not on separate line
drivers/video/ov2640.c:493:32: error: Left bracket not on separate line
drivers/video/ov2640.c:493:47: error: Left bracket not on separate line
drivers/video/ov2640.c:493:62: error: Left bracket not on separate line
drivers/video/ov2640.c:494:17: error: Left bracket not on separate line
drivers/video/ov2640.c:494:32: error: Left bracket not on separate line
drivers/video/ov2640.c:494:47: error: Left bracket not on separate line
drivers/video/ov2640.c:494:62: error: Left bracket not on separate line
drivers/video/ov2640.c:495:17: error: Left bracket not on separate line
drivers/video/ov2640.c:495:32: error: Left bracket not on separate line
drivers/video/ov2640.c:495:47: error: Left bracket not on separate line
drivers/video/ov2640.c:495:62: error: Left bracket not on separate line
drivers/video/ov2640.c:496:17: error: Left bracket not on separate line
drivers/video/ov2640.c:496:32: error: Left bracket not on separate line
drivers/video/ov2640.c:496:47: error: Left bracket not on separate line
drivers/video/ov2640.c:496:62: error: Left bracket not on separate line
drivers/video/ov2640.c:497:17: error: Left bracket not on separate line
drivers/video/ov2640.c:497:32: error: Left bracket not on separate line
drivers/video/ov2640.c:497:47: error: Left bracket not on separate line
drivers/video/ov2640.c:497:62: error: Left bracket not on separate line
drivers/video/ov2640.c:498:17: error: Left bracket not on separate line
drivers/video/ov2640.c:498:32: error: Left bracket not on separate line
drivers/video/ov2640.c:498:47: error: Left bracket not on separate line
drivers/video/ov2640.c:498:62: error: Left bracket not on separate line
drivers/video/ov2640.c:499:17: error: Left bracket not on separate line
drivers/video/ov2640.c:499:32: error: Left bracket not on separate line
drivers/video/ov2640.c:499:47: error: Left bracket not on separate line
drivers/video/ov2640.c:499:62: error: Left bracket not on separate line
drivers/video/ov2640.c:500:17: error: Left bracket not on separate line
drivers/video/ov2640.c:500:32: error: Left bracket not on separate line
drivers/video/ov2640.c:500:47: error: Left bracket not on separate line
drivers/video/ov2640.c:500:62: error: Left bracket not on separate line
drivers/video/ov2640.c:501:17: error: Left bracket not on separate line
drivers/video/ov2640.c:501:32: error: Left bracket not on separate line
drivers/video/ov2640.c:501:47: error: Left bracket not on separate line
drivers/video/ov2640.c:501:62: error: Left bracket not on separate line
drivers/video/ov2640.c:510:17: error: Left bracket not on separate line
drivers/video/ov2640.c:510:32: error: Left bracket not on separate line
drivers/video/ov2640.c:510:47: error: Left bracket not on separate line
drivers/video/ov2640.c:510:62: error: Left bracket not on separate line
drivers/video/ov2640.c:511:17: error: Left bracket not on separate line
drivers/video/ov2640.c:511:32: error: Left bracket not on separate line
drivers/video/ov2640.c:511:47: error: Left bracket not on separate line
drivers/video/ov2640.c:520:17: error: Left bracket not on separate line
drivers/video/ov2640.c:520:32: error: Left bracket not on separate line
drivers/video/ov2640.c:520:47: error: Left bracket not on separate line
drivers/video/ov2640.c:520:62: error: Left bracket not on separate line
drivers/video/ov2640.c:521:17: error: Left bracket not on separate line
drivers/video/ov2640.c:521:32: error: Left bracket not on separate line
drivers/video/ov2640.c:532:17: error: Left bracket not on separate line
drivers/video/ov2640.c:532:32: error: Left bracket not on separate line
drivers/video/ov2640.c:532:47: error: Left bracket not on separate line
drivers/video/ov2640.c:532:62: error: Left bracket not on separate line
drivers/video/ov2640.c:533:17: error: Left bracket not on separate line
drivers/video/ov2640.c:533:32: error: Left bracket not on separate line
drivers/video/ov2640.c:533:47: error: Left bracket not on separate line
drivers/video/ov2640.c:533:62: error: Left bracket not on separate line
drivers/video/ov2640.c:534:17: error: Left bracket not on separate line
drivers/video/ov2640.c:534:32: error: Left bracket not on separate line
drivers/video/ov2640.c:534:47: error: Left bracket not on separate line
drivers/video/ov2640.c:534:62: error: Left bracket not on separate line
drivers/video/ov2640.c:535:17: error: Left bracket not on separate line
drivers/video/ov2640.c:535:32: error: Left bracket not on separate line
drivers/video/ov2640.c:535:47: error: Left bracket not on separate line
drivers/video/ov2640.c:535:62: error: Left bracket not on separate line
drivers/video/ov2640.c:536:17: error: Left bracket not on separate line
drivers/video/ov2640.c:536:32: error: Left bracket not on separate line
drivers/video/ov2640.c:536:47: error: Left bracket not on separate line
drivers/video/ov2640.c:536:62: error: Left bracket not on separate line
drivers/video/ov2640.c:537:17: error: Left bracket not on separate line
drivers/video/ov2640.c:537:32: error: Left bracket not on separate line
drivers/video/ov2640.c:537:47: error: Left bracket not on separate line
drivers/video/ov2640.c:537:62: error: Left bracket not on separate line
drivers/video/ov2640.c:538:17: error: Left bracket not on separate line
drivers/video/ov2640.c:538:32: error: Left bracket not on separate line
drivers/video/ov2640.c:538:47: error: Left bracket not on separate line
drivers/video/ov2640.c:538:62: error: Left bracket not on separate line
drivers/video/ov2640.c:539:17: error: Left bracket not on separate line
drivers/video/ov2640.c:539:32: error: Left bracket not on separate line
drivers/video/ov2640.c:539:47: error: Left bracket not on separate line
drivers/video/ov2640.c:550:17: error: Left bracket not on separate line
drivers/video/ov2640.c:550:32: error: Left bracket not on separate line
drivers/video/ov2640.c:550:47: error: Left bracket not on separate line
drivers/video/ov2640.c:550:62: error: Left bracket not on separate line
drivers/video/ov2640.c:551:17: error: Left bracket not on separate line
drivers/video/ov2640.c:551:32: error: Left bracket not on separate line
drivers/video/ov2640.c:551:47: error: Left bracket not on separate line
drivers/video/ov2640.c:551:62: error: Left bracket not on separate line
drivers/video/ov2640.c:552:17: error: Left bracket not on separate line
drivers/video/ov2640.c:552:32: error: Left bracket not on separate line
drivers/video/ov2640.c:552:47: error: Left bracket not on separate line
drivers/video/ov2640.c:552:62: error: Left bracket not on separate line
drivers/video/ov2640.c:553:17: error: Left bracket not on separate line
drivers/video/ov2640.c:553:32: error: Left bracket not on separate line
drivers/video/ov2640.c:553:47: error: Left bracket not on separate line
drivers/video/ov2640.c:553:62: error: Left bracket not on separate line
drivers/video/ov2640.c:554:17: error: Left bracket not on separate line
drivers/video/ov2640.c:554:32: error: Left bracket not on separate line
drivers/video/ov2640.c:554:47: error: Left bracket not on separate line
drivers/video/ov2640.c:554:62: error: Left bracket not on separate line
drivers/video/ov2640.c:555:17: error: Left bracket not on separate line
drivers/video/ov2640.c:555:32: error: Left bracket not on separate line
drivers/video/ov2640.c:555:47: error: Left bracket not on separate line
drivers/video/ov2640.c:555:62: error: Left bracket not on separate line
drivers/video/ov2640.c:556:17: error: Left bracket not on separate line
drivers/video/ov2640.c:556:32: error: Left bracket not on separate line
drivers/video/ov2640.c:556:47: error: Left bracket not on separate line
drivers/video/ov2640.c:556:62: error: Left bracket not on separate line
drivers/video/ov2640.c:557:17: error: Left bracket not on separate line
drivers/video/ov2640.c:557:32: error: Left bracket not on separate line
drivers/video/ov2640.c:557:47: error: Left bracket not on separate line
drivers/video/ov2640.c:568:17: error: Left bracket not on separate line
drivers/video/ov2640.c:568:32: error: Left bracket not on separate line
drivers/video/ov2640.c:568:47: error: Left bracket not on separate line
drivers/video/ov2640.c:568:62: error: Left bracket not on separate line
drivers/video/ov2640.c:569:17: error: Left bracket not on separate line
drivers/video/ov2640.c:569:32: error: Left bracket not on separate line
drivers/video/ov2640.c:569:47: error: Left bracket not on separate line
drivers/video/ov2640.c:569:62: error: Left bracket not on separate line
drivers/video/ov2640.c:570:17: error: Left bracket not on separate line
drivers/video/ov2640.c:570:32: error: Left bracket not on separate line
drivers/video/ov2640.c:570:47: error: Left bracket not on separate line
drivers/video/ov2640.c:570:62: error: Left bracket not on separate line
drivers/video/ov2640.c:571:17: error: Left bracket not on separate line
drivers/video/ov2640.c:571:32: error: Left bracket not on separate line
drivers/video/ov2640.c:571:47: error: Left bracket not on separate line
drivers/video/ov2640.c:571:62: error: Left bracket not on separate line
drivers/video/ov2640.c:572:17: error: Left bracket not on separate line
drivers/video/ov2640.c:572:32: error: Left bracket not on separate line
drivers/video/ov2640.c:572:47: error: Left bracket not on separate line
drivers/video/ov2640.c:572:62: error: Left bracket not on separate line
drivers/video/ov2640.c:573:17: error: Left bracket not on separate line
drivers/video/ov2640.c:573:32: error: Left bracket not on separate line
drivers/video/ov2640.c:573:47: error: Left bracket not on separate line
drivers/video/ov2640.c:573:62: error: Left bracket not on separate line
drivers/video/ov2640.c:574:17: error: Left bracket not on separate line
drivers/video/ov2640.c:574:32: error: Left bracket not on separate line
drivers/video/ov2640.c:574:47: error: Left bracket not on separate line
drivers/video/ov2640.c:574:62: error: Left bracket not on separate line
drivers/video/ov2640.c:575:17: error: Left bracket not on separate line
drivers/video/ov2640.c:575:32: error: Left bracket not on separate line
drivers/video/ov2640.c:575:47: error: Left bracket not on separate line
drivers/video/ov2640.c:586:17: error: Left bracket not on separate line
drivers/video/ov2640.c:586:32: error: Left bracket not on separate line
drivers/video/ov2640.c:586:47: error: Left bracket not on separate line
drivers/video/ov2640.c:586:62: error: Left bracket not on separate line
drivers/video/ov2640.c:587:17: error: Left bracket not on separate line
drivers/video/ov2640.c:587:32: error: Left bracket not on separate line
drivers/video/ov2640.c:587:47: error: Left bracket not on separate line
drivers/video/ov2640.c:587:62: error: Left bracket not on separate line
drivers/video/ov2640.c:588:17: error: Left bracket not on separate line
drivers/video/ov2640.c:588:32: error: Left bracket not on separate line
drivers/video/ov2640.c:588:47: error: Left bracket not on separate line
drivers/video/ov2640.c:588:62: error: Left bracket not on separate line
drivers/video/ov2640.c:589:17: error: Left bracket not on separate line
drivers/video/ov2640.c:589:32: error: Left bracket not on separate line
drivers/video/ov2640.c:589:47: error: Left bracket not on separate line
drivers/video/ov2640.c:589:62: error: Left bracket not on separate line
drivers/video/ov2640.c:590:17: error: Left bracket not on separate line
drivers/video/ov2640.c:590:32: error: Left bracket not on separate line
drivers/video/ov2640.c:590:47: error: Left bracket not on separate line
drivers/video/ov2640.c:590:62: error: Left bracket not on separate line
drivers/video/ov2640.c:591:17: error: Left bracket not on separate line
drivers/video/ov2640.c:591:32: error: Left bracket not on separate line
drivers/video/ov2640.c:591:47: error: Left bracket not on separate line
drivers/video/ov2640.c:591:62: error: Left bracket not on separate line
drivers/video/ov2640.c:592:17: error: Left bracket not on separate line
drivers/video/ov2640.c:592:32: error: Left bracket not on separate line
drivers/video/ov2640.c:592:47: error: Left bracket not on separate line
drivers/video/ov2640.c:592:62: error: Left bracket not on separate line
drivers/video/ov2640.c:593:17: error: Left bracket not on separate line
drivers/video/ov2640.c:593:32: error: Left bracket not on separate line
drivers/video/ov2640.c:593:47: error: Left bracket not on separate line
drivers/video/ov2640.c:593:62: error: Left bracket not on separate line
drivers/video/ov2640.c:604:17: error: Left bracket not on separate line
drivers/video/ov2640.c:604:32: error: Left bracket not on separate line
drivers/video/ov2640.c:604:47: error: Left bracket not on separate line
drivers/video/ov2640.c:604:62: error: Left bracket not on separate line
drivers/video/ov2640.c:605:17: error: Left bracket not on separate line
drivers/video/ov2640.c:605:32: error: Left bracket not on separate line
drivers/video/ov2640.c:605:47: error: Left bracket not on separate line
drivers/video/ov2640.c:605:62: error: Left bracket not on separate line
drivers/video/ov2640.c:606:17: error: Left bracket not on separate line
drivers/video/ov2640.c:606:32: error: Left bracket not on separate line
drivers/video/ov2640.c:606:47: error: Left bracket not on separate line
drivers/video/ov2640.c:606:62: error: Left bracket not on separate line
drivers/video/ov2640.c:607:17: error: Left bracket not on separate line
drivers/video/ov2640.c:607:32: error: Left bracket not on separate line
drivers/video/ov2640.c:607:47: error: Left bracket not on separate line
drivers/video/ov2640.c:607:62: error: Left bracket not on separate line
drivers/video/ov2640.c:608:17: error: Left bracket not on separate line
drivers/video/ov2640.c:608:32: error: Left bracket not on separate line
drivers/video/ov2640.c:608:47: error: Left bracket not on separate line
drivers/video/ov2640.c:608:62: error: Left bracket not on separate line
drivers/video/ov2640.c:609:17: error: Left bracket not on separate line
drivers/video/ov2640.c:609:32: error: Left bracket not on separate line
drivers/video/ov2640.c:609:47: error: Left bracket not on separate line
drivers/video/ov2640.c:609:62: error: Left bracket not on separate line
drivers/video/ov2640.c:610:17: error: Left bracket not on separate line
drivers/video/ov2640.c:610:32: error: Left bracket not on separate line
drivers/video/ov2640.c:610:47: error: Left bracket not on separate line
drivers/video/ov2640.c:610:62: error: Left bracket not on separate line
drivers/video/ov2640.c:611:17: error: Left bracket not on separate line
drivers/video/ov2640.c:611:32: error: Left bracket not on separate line
drivers/video/ov2640.c:611:47: error: Left bracket not on separate line
drivers/video/ov2640.c:611:62: error: Left bracket not on separate line
drivers/video/ov2640.c:622:17: error: Left bracket not on separate line
drivers/video/ov2640.c:622:32: error: Left bracket not on separate line
drivers/video/ov2640.c:622:47: error: Left bracket not on separate line
drivers/video/ov2640.c:622:62: error: Left bracket not on separate line
drivers/video/ov2640.c:623:17: error: Left bracket not on separate line
drivers/video/ov2640.c:623:32: error: Left bracket not on separate line
drivers/video/ov2640.c:623:47: error: Left bracket not on separate line
drivers/video/ov2640.c:623:62: error: Left bracket not on separate line
drivers/video/ov2640.c:624:17: error: Left bracket not on separate line
drivers/video/ov2640.c:624:32: error: Left bracket not on separate line
drivers/video/ov2640.c:624:47: error: Left bracket not on separate line
drivers/video/ov2640.c:624:62: error: Left bracket not on separate line
drivers/video/ov2640.c:625:17: error: Left bracket not on separate line
drivers/video/ov2640.c:625:32: error: Left bracket not on separate line
drivers/video/ov2640.c:625:47: error: Left bracket not on separate line
drivers/video/ov2640.c:625:62: error: Left bracket not on separate line
drivers/video/ov2640.c:626:17: error: Left bracket not on separate line
drivers/video/ov2640.c:626:32: error: Left bracket not on separate line
drivers/video/ov2640.c:626:47: error: Left bracket not on separate line
drivers/video/ov2640.c:626:62: error: Left bracket not on separate line
drivers/video/ov2640.c:627:17: error: Left bracket not on separate line
drivers/video/ov2640.c:627:32: error: Left bracket not on separate line
drivers/video/ov2640.c:627:47: error: Left bracket not on separate line
drivers/video/ov2640.c:627:62: error: Left bracket not on separate line
drivers/video/ov2640.c:628:17: error: Left bracket not on separate line
drivers/video/ov2640.c:628:32: error: Left bracket not on separate line
drivers/video/ov2640.c:628:47: error: Left bracket not on separate line
drivers/video/ov2640.c:628:62: error: Left bracket not on separate line
drivers/video/ov2640.c:629:17: error: Left bracket not on separate line
drivers/video/ov2640.c:629:32: error: Left bracket not on separate line
drivers/video/ov2640.c:640:17: error: Left bracket not on separate line
drivers/video/ov2640.c:640:32: error: Left bracket not on separate line
drivers/video/ov2640.c:640:47: error: Left bracket not on separate line
drivers/video/ov2640.c:640:62: error: Left bracket not on separate line
drivers/video/ov2640.c:641:17: error: Left bracket not on separate line
drivers/video/ov2640.c:641:32: error: Left bracket not on separate line
drivers/video/ov2640.c:641:47: error: Left bracket not on separate line
drivers/video/ov2640.c:641:62: error: Left bracket not on separate line
drivers/video/ov2640.c:642:17: error: Left bracket not on separate line
drivers/video/ov2640.c:642:32: error: Left bracket not on separate line
drivers/video/ov2640.c:642:47: error: Left bracket not on separate line
drivers/video/ov2640.c:642:62: error: Left bracket not on separate line
drivers/video/ov2640.c:643:17: error: Left bracket not on separate line
drivers/video/ov2640.c:643:32: error: Left bracket not on separate line
drivers/video/ov2640.c:643:47: error: Left bracket not on separate line
drivers/video/ov2640.c:643:62: error: Left bracket not on separate line
drivers/video/ov2640.c:644:17: error: Left bracket not on separate line
drivers/video/ov2640.c:644:32: error: Left bracket not on separate line
drivers/video/ov2640.c:644:47: error: Left bracket not on separate line
drivers/video/ov2640.c:644:62: error: Left bracket not on separate line
drivers/video/ov2640.c:645:17: error: Left bracket not on separate line
drivers/video/ov2640.c:645:32: error: Left bracket not on separate line
drivers/video/ov2640.c:645:47: error: Left bracket not on separate line
drivers/video/ov2640.c:645:62: error: Left bracket not on separate line
drivers/video/ov2640.c:646:17: error: Left bracket not on separate line
drivers/video/ov2640.c:646:32: error: Left bracket not on separate line
drivers/video/ov2640.c:646:47: error: Left bracket not on separate line
drivers/video/ov2640.c:646:62: error: Left bracket not on separate line
drivers/video/ov2640.c:647:17: error: Left bracket not on separate line
drivers/video/ov2640.c:647:32: error: Left bracket not on separate line
drivers/video/ov2640.c:647:47: error: Left bracket not on separate line
drivers/video/ov2640.c:647:62: error: Left bracket not on separate line
drivers/video/ov2640.c:658:17: error: Left bracket not on separate line
drivers/video/ov2640.c:658:32: error: Left bracket not on separate line
drivers/video/ov2640.c:658:47: error: Left bracket not on separate line
drivers/video/ov2640.c:658:62: error: Left bracket not on separate line
drivers/video/ov2640.c:659:17: error: Left bracket not on separate line
drivers/video/ov2640.c:659:32: error: Left bracket not on separate line
drivers/video/ov2640.c:659:47: error: Left bracket not on separate line
drivers/video/ov2640.c:659:62: error: Left bracket not on separate line
drivers/video/ov2640.c:660:17: error: Left bracket not on separate line
drivers/video/ov2640.c:660:32: error: Left bracket not on separate line
drivers/video/ov2640.c:660:47: error: Left bracket not on separate line
drivers/video/ov2640.c:660:62: error: Left bracket not on separate line
drivers/video/ov2640.c:661:17: error: Left bracket not on separate line
drivers/video/ov2640.c:661:32: error: Left bracket not on separate line
drivers/video/ov2640.c:661:47: error: Left bracket not on separate line
drivers/video/ov2640.c:661:62: error: Left bracket not on separate line
drivers/video/ov2640.c:662:17: error: Left bracket not on separate line
drivers/video/ov2640.c:662:32: error: Left bracket not on separate line
drivers/video/ov2640.c:662:47: error: Left bracket not on separate line
drivers/video/ov2640.c:662:62: error: Left bracket not on separate line
drivers/video/ov2640.c:663:17: error: Left bracket not on separate line
drivers/video/ov2640.c:663:32: error: Left bracket not on separate line
drivers/video/ov2640.c:663:47: error: Left bracket not on separate line
drivers/video/ov2640.c:663:62: error: Left bracket not on separate line
drivers/video/ov2640.c:664:17: error: Left bracket not on separate line
drivers/video/ov2640.c:664:32: error: Left bracket not on separate line
drivers/video/ov2640.c:664:47: error: Left bracket not on separate line
drivers/video/ov2640.c:664:62: error: Left bracket not on separate line
drivers/video/ov2640.c:665:17: error: Left bracket not on separate line
drivers/video/ov2640.c:665:32: error: Left bracket not on separate line
drivers/video/ov2640.c:665:47: error: Left bracket not on separate line
drivers/video/ov2640.c:665:62: error: Left bracket not on separate line
The following nxstyle errors are not trivial to fix because
they are parts of the ioctl api.
drivers/wireless/ieee80211/bcm43xxx/bcmf_driver.c:1083:34: error: Mixed case identifier found
drivers/wireless/ieee80211/bcm43xxx/bcmf_driver.c:1445:7: error: Mixed case identifier found
Right now if usb tracing is enabled but verbose is disabled
a debug assert will be triggered when ever a verbose trace point
is hit. Instead of trying to print the NULL message, just return
early.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Re-check RX queue status after uart_enablerxint() and before blocking
the reading task on the receive semaphore. cdcacm (and maybe other UART
drivers) can push buffered data into the receive queue during
uart_enablerxint(), leading to a blocked task while data is already
available.
Signed-off-by: Tido Klaassen <tido@4gh.eu>
If size_t != uint32_t, this can give a build error:
mtd/mtd_progmem.c:134:16: error: conflicting types for 'progmem_log2'
134 | static int32_t progmem_log2(uint32_t blocksize)
| ^~~~~~~~~~~~
mtd/mtd_progmem.c:82:16: note: previous declaration of 'progmem_log2' was here
82 | static int32_t progmem_log2(size_t blocksize);
| ^~~~~~~~~~~~
Makefile:118: recipe for target 'mtd_progmem.o' failed
Signed-off-by: Juha Niskanen <juha.niskanen@haltian.com>
Add basic sample rate conversion to the CXD56 Spresense audio
driver using libsamplerate. Currently conversion is only done
during playback and all output is fixed at 48 kHz.
Issues:
- 16 kHz SRC has glitches (unless data dump is enabled)
- 44.1 kHz SRC gets stuck
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
MAX11612: 4 channels VCC=5V0 Int VRef=4.096V
MAX11613: 4 channels VCC=3V3 Int VRef=2.048V
MAX11614: 8 channels VCC=5V0 Int VRef=4.096V
MAX11615: 8 channels VCC=3V3 Int VRef=2.048V
MAX11616: 12 channels VCC=5V0 Int VRef=4.096V
MAX11617: 12 channels VCC=3V3 Int VRef=2.048V
Note: The chips' auto-scanning feature is not supported in this revision.
1.use userspace buffer rather than intermediate buffer of upperhalf driver
2.support block and non-block ways.
Change-Id: I1d0cecfaa20ce54961c58713d8f2f8857e349791
Signed-off-by: dongjiuzhu <dongjiuzhu1@xiaomi.com>
1.support for multi-user access
2.support special cmd to control sensor
3.support userspace to set size of intermediate buffer
by ioctl: SNOIC_SET_BUFFER_SIZE
Change-Id: I9ce3a65b88b12c28388ec397431f1a277b120c2a
Signed-off-by: dongjiuzhu <dongjiuzhu1@xiaomi.com>
When audio fails it is usefull to have I2S transfer errors in place
to be able to track the issue
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
This adds the inital wiring for i2c bus support in the sim target
and for Linux host adds the lower half that uses the i2c chardev.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Summary:
- This commit enables gs2200m driver to get IWNWID/IWFREQ/IWSENS information
Impact:
- Affects gs2200m only
Testing:
- Tested with spresense:wifi
The sendblk function was missing NOSTOP on the first msg of the
i2c transaction. This could cause an extra STOP to be inserted
in the transaction.
The driver uses up_mdelay for some timing where it should be
using a sleep.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Summary:
- This commit enables gs2200m driver re-associate to the access point when disassociated
Impact:
- Affects gs2200m only
Testing:
- Tested with spresense:wifi
Follow the POSIX description.
SIGTSTP should be sent when the Ctrl-Z characters is encountered, not SIGSTP.
Testing:
Built with hifive1-revb:nsh (CONFIG_SERIAL_TERMIOS=y, CONFIG_SIG_DEFAULT=y and CONFIG_TTY_SIGTSTP=y)
Summary:
- During network stress testing, ASSERT happened in gs2200m_ioctl_connect()
- The test was nxplayer (http audio streaming) and repeating wget every 0.5sec
- gs2200m_ioctl_connect() calls gs2200m_send_cmd() to send an AT command
- Then it waits for a synchronous command response.
- However, if heavy tcp traffic happens on another socket, it can receive a bulk packet
- With this commit, if it receives such a packet then the packet is duplicated.
- After that, the duplicated packet is added to the packet queue and notify the userland.
Impact:
- Affect almost all use cases with gs2200m
Testing:
- Tested with both spresense:wifi and spresense:wifi_smp
- Tested with nxplayer (http audio streaming) and repeat wget
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
There is a good case on sim platform:
When we input some cmd and click enter key to start application in terminal,
this context will change to application from IDLE loop. Althrough entey key '\r'
has been received to recv buffer and complete post semaphore of reader, but
pollnotify may not be called because context change. So when application run
poll function, because no events happend and poll enter wait, context will
again change to IDLE loop, this pollnotify of IDLE loop will run to send poll
events, poll function of applicaton will wake up. It's wrong!
Change-Id: I812a889f2e90781a9c3cb4b0251cccc4d32bebd1
Signed-off-by: dongjiuzhu <dongjiuzhu1@xiaomi.com>
Summary:
- This commit adds support for ioctl(fd, SIOCGIFADDR, ...) to gs2200m.c
Impact:
- Only affects ioctl(fd, SIOCGIFADDR, ...) with gs2200m
- Need to update apps/wireless/gs2200m as well
Testing:
- Tested with spresense:wifi
- Tested with dhcpc
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- This commit fixes to handle address info in accept() in gs2200m.c
Impact:
- All use cases which use accept() with gs2200m
- Need to update apps/wireless/gs2200m as well
Testing:
- Tested with spresene:wifi
- Tested with telnet daemon
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>>
Summary:
- This commit fixes to handle UDP connect() with bind() to a local port.
Impact:
- All UDP cases which use connect() with gs2200m
- Need to update apps/wireless/gs2200m as well
Testing:
- Tested with spresense:wifi
- Create a UDP socket and bind() to a local port.
- Then connect() to remote address with port and send()
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Summary:
- This commit fixes compile errors if CONFIG_DEBUG_ASSERTIONS=y
Impact:
- Affects noteram_driver only
Testing:
- Tested with spresense:wifi_smp with CONFIG_DEBUG_ASSERTIONS=y
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This adds support for the Q10 BlackBerry based keyboard
from Solder Party. https://www.solder.party/docs/keyboard-pmod/
They keyboard device registered at /dev/kbdN is fully compatible
with hidkbd and has been testing with the Keyboard FeatherWing
on the nRF52 platform.
The buttons are added as a standard discrete joystick if
optionally enabled. The PMOD variant of this does not
include these buttons, but the Keyboard FeatherWing does.
This joystick is usually defined at /dev/djoyN and
can be used with the djoy example application.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
This patch resolves to bugs in the GPIO interrupt logic:
1. Any pins did not have STMPE811_GPIO_RISING in their pincfg
would clear the rising edge interrupt enable flag for all
pins due to a masking bug.
2. Pins would never trigger a second interrupt. There is an
undocumented requirement that you have to clear both the
GPIO interrupt status register __and__ also the edge
detection status register. Failure to clear either of
these will result in no further interrupts being triggered.
This requirement exists both for edge and level modes of
operation.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Summary:
- This commit applies NET_LL_IEEE80211 to gs2200m.c
- Also selects DRIVERS_IEEE80211 in Kconfig
Impact:
- Affects use cases with gs2200m driver
Testing:
- Tested with spresense:wifi and spresense:wifi_smp
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
The WS2812 is very common in LED strips as it is an integrated
controller and LED. It is driven by a single data line, but
the timing requirements can be met by using most SPI controllers
and the use of DMA.
This driver has been validated on the nRF52 arch both with a
single LED and a strip of 144.
Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Summary:
- This commit fixes warnings when we remove noreturn from _assert()
Impact:
- Should have no impact
Testing:
- Tested with spresense:wifi
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
The Multiblock write path was missing the
the SDIO_WAITENABLE with SDIOWAIT_WRCOMPLETE.
This could be seen with debugging turned on as
mmcsd_eventwait: ERROR: Awakened with 10
mmcsd_transferready: ERROR: mmcsd_eventwait for transfer ready failed: -5
If the buffer to be flushed isn't multipled by the erase size,
let's pad the buffer proactively to avoid the allocation in ftl.
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I6d7904aafab93a7886a594319d65826b81cd3cd1
3Change-Id: I88276149cc7826e7416929ca60b06314e96079a6
Summary:
- Remove unnecessay code from gs2200m_irq()
- Fix irq control in case that work_available() returns false
Impact:
- All use cases with gs2200m driver
Testing:
- Tested with spresense:wifi
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
When CONFIG_MMCSD_MULTIBLOCK_DISABLE is lit, all SD
read/write failed. The function return the number of
blocks in `ret`, set on entry to nsectors. That was
then wiped out by using the ret for the mmcsd_takesem.
Since the code had many path setting return, the choices for
the fix could have been add a new varaible or simple init it
were used. I choose the latter.
flush the dirty sector to keep the sector sequence before ftl write
Change-Id: I1096cce39965806d5c877c2929b5a2ecdab27ac9
Signed-off-by: chao.an <anchao@xiaomi.com>
Fixes:
##[error]net/tun.c:837:13: error: conflicting types for 'tun_poll_expiry'
837 | static void tun_poll_expiry(FAR void *arg)
| ^~~~~~~~~~~~~~~
net/tun.c:196:13: note: previous declaration of 'tun_poll_expiry' was here
196 | static void tun_poll_expiry(wdparm_t arg);
| ^~~~~~~~~~~~~~~
And
##[error]net/tun.c:881:57: error: passing argument 4 of 'wd_start' makes integer from pointer without a cast [-Werror=int-conversion]
881 | wd_start(&priv->txpoll, TUN_WDDELAY, tun_poll_expiry, priv);
| ^~~~
| |
| struct tun_device_s *
In file included from /github/workspace/sources/nuttx/include/nuttx/sched.h:41,
from /github/workspace/sources/nuttx/include/sched.h:34,
from /github/workspace/sources/nuttx/include/nuttx/arch.h:81,
from net/tun.c:60:
/github/workspace/sources/nuttx/include/nuttx/wdog.h:134:42: note: expected 'wdparm_t' {aka 'long unsigned int'} but argument is of type 'struct tun_device_s *'
134 | wdentry_t wdentry, wdparm_t arg);
| ~~~~~~~~~^~~
And
chip/cxd56_rtc.c: In function 'up_rtc_initialize':
##[error]chip/cxd56_rtc.c:358:3: error: too many arguments to function 'cxd56_rtc_initialize'
358 | cxd56_rtc_initialize(1, NULL);
| ^~~~~~~~~~~~~~~~~~~~
chip/cxd56_rtc.c:253:13: note: declared here
253 | static void cxd56_rtc_initialize(wdparm_t arg)
| ^~~~~~~~~~~~~~~~~~~~
sam_ili9488.c:1605:7: error: label 'errout_with_dmadog' used but not defined
bcmf_sdio.c:855:16: error: passing argument 1 of 'wd_start' from incompatible pointer type
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
to save the preserved space(1KB) and also avoid the heap overhead
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I694073f68e1bd63960cedeea1ddec441437be025
Summary:
- This commit is a workaround to avoid errors in gs2200m_send_cmd()
- See the actual sequence in Testing for details
Impact:
- gs2200m driver
Testing:
- Test with spresense:wifi
- 1-1 Run tcpclient on NuttX and run nc on Linux
- 1-2 Stop nc on Linux then tcpclient also stops
- 1-3 Run tcpclient then the first AT+NCTCP will fail
- 1-4 But the second AT+NCTCP will succeed
- 2-1 Run tcpclient on NuttX and run nc on Linux
- 2-2 Stop nc on Linux then tcpclient also stops
- 2-3 Run tcpserver then the first AT+NSTCP will fail
- 2-4 But the second AT+NSTCP will succeed
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
1.Expose the notification through fb_vtable_s::updatearea
2.Incorporate old nx_notify_rectangle into the new updatearea callback
3.Migrate the calle of nx_notify_rectangle to fb_vtable_s::updatearea
Change-Id: Ia3d1f73e8757b2d381586d76ec6adc16c810018d
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
Summary:
- Change default value for RNDIS_NWRREQS based on NET_TCP_WRITE_BUFFERS
Impact:
- This commit affects RNDIS use cases
Testing:
- spresense:rndis with CONFIG_NET_TCP_WRITE_BUFFERS=y
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
drivers/net/ftmac100.c, libs/libc/stdlib/lib_aligned_alloc.c
A continuation of PRs #1507, #1510, and #1512. See Issue #1481 for additional information.
malloc() and free() should never be used within the OS. This will work in the FLAT build because there is only a single heap, but will cause problems in PROTECTED and KERNEL build modes where there are separate heaps for user and kernel memory.
Typically kmm_malloc(), kmm_zalloc(), and kmm_free() should be called within the kernel in those build modes to use the kernel heap.
Memory is never free. Possible memory leak:
./boards/arm/cxd56xx/common/src/cxd56_crashdump.c: pdump = malloc(sizeof(fullcontext_t));
Memory allocated with malloc(), but freed with kmm_free():
./drivers/usbhost/usbhost_composite.c: cfgbuffer = (FAR uint8_t *)malloc(CUSTOM_CONFIG_BUFSIZE);
Memory is never freed in these cases. It is allocated in the driver initialization logic, but there is no corresponding uninitialization logic; memory is not freed on error conditions:
./arch/arm/src/lc823450/lc823450_i2s.c: priv = (struct lc823450_i2s_s *)zalloc(sizeof(struct lc823450_i2s_s));
./arch/arm/src/sam34/sam_spi.c: spics = (struct sam_spics_s *)zalloc(sizeof(struct sam_spics_s));
./arch/arm/src/sama5/sam_spi.c: spics = (struct sam_spics_s *)zalloc(sizeof(struct sam_spics_s));
./arch/arm/src/samv7/sam_spi.c: spics = (struct sam_spics_s *)zalloc(sizeof(struct sam_spics_s));
Memory is allocated with zalloc() but freed on error conditions with kmm_free():
./arch/arm/src/sama5/sam_ssc.c: priv = (struct sam_ssc_s *)zalloc(sizeof(struct sam_ssc_s));
./arch/arm/src/samv7/sam_ssc.c: priv = (struct sam_ssc_s *)zalloc(sizeof(struct sam_ssc_s));
./arch/arm/src/stm32/stm32_i2s.c: priv = (struct stm32_i2s_s *)zalloc(sizeof(struct stm32_i2s_s));
Memory is never freed:
./drivers/spi/spi_bitbang.c: priv = (FAR struct spi_bitbang_s *)zalloc(sizeof(struct spi_bitbang_s));
arch/arm/src/cxd56xx/cxd56_gnss.c, arch/arm/src/xmc4/xmc4_spi.c,
crypto/blake2s.c, drivers/lcd/pcf8574_lcd_backpack.c, drivers/lcd/st7032.c
User space memory should not be used within the OS and, when it is absolutely necessary to use user-space memory, it should be allocated using kumm_malloc().
drivers/net/telnet.c
drivers/wireless/bluetooth/bt_uart_bcm4343x.c
drivers/wireless/ieee802154/mrf24j40/mrf24j40.c
Kernel memory was allocated using kmm_malloc() or kmm_zalloc() but freed with with the user-space allocator free(). In the FLAT build, this is bad style, but not harmful because there is only a single, heap and malloc() and kmm_malloc() map to the same function.
But that is not true in the case of the PROTECTED or KERNEL builds. In those cases, there are separate heaps. kmm_malloc() will allocate from the kernel heap. free() will attempt to free the kernel memory from the user heap and will cause an assertion (or other obscure failure if assertions are disabled).
Found by clang-check:
usbhost/hid_parser.c:278:26: warning: Assigned value is garbage or undefined
usage[i] = usage[i + 1];
^ ~~~~~~~~~~~~
usbhost/hid_parser.c:321:34: warning: Assigned value is garbage or undefined
usage[i] = usage[i + 1];
^ ~~~~~~~~~~~~
2 warnings generated.
Found by clang-check:
syslog/syslog_write.c:96:7: warning: Value stored to 'nwritten' is never read
nwritten = g_syslog_channel->sc_write(buffer, buflen);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
Summary:
- This PR fixes null pointer dereference in gs2200m.c
Impact:
- This PR affects gs2200m driver.
Testing:
- Use spresense:wifi and run gs2200m daemon in STA mode.
- Then execute 'renew eth0' to obtain DHCP address.
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Make.dep file should be updated by .config changed after first make.
There are 2 cases affected for this problem:
1) Add source files by config symbol
2) Include header files in #ifdef directive
These 2 cases may not be included in Make.dep and this may prevent the
differential build from working correctly.
- Add new functions of GNSS
- Support the lower PWM frequency
- Add CONFIG_CPUFREQ_RELEASE_LOCK
- Add high speed ADC support
- Add HPADC input gain configuration
- Add eMMC device
- Frame buffer support
- Fix SD/GNSS/sensor drivers not worked
- Build errors
- Fix nxstyle issues
- Add board specific logic to altair modem dirver
- Fix issue that SPI4 RX frequency violated AC Spec
- Remove dummy buffer in altair driver
- Fix priority of SPI transfer task is too low
- Remove unnecessary configuration
- Modify timeout value for RX ready
- Fix minor bugs
Kinetis: Reworked USB driver for setup out data phase.
Freedom K28: New config nshsdusb, with RNDIS support
PL2303: Try to avoid clone detection.
General: various nxstyle fixes
General: license changed
since graphics/Kconfig already do the similar thing
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ib2c1955a6b027cfa4e83c3b81ddfb505902dd85d
- Add missing cancel process when the send command fails
- Make it possible to recover from SD initialization error
- Reduce time in changing transfer mode to 5msec from 500msec.
Replace usleep function instead of up_udelay in other to avoid
blocking other tasks from working.
since libc++ declare these function in ctime by:
using ::localtime[_r];
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ic0bb68b44c0cab838ab7cc34baee2aaa3ca8a9b5
avoid the buffer flush as much as possible
Change-Id: I902f374e9540b36bd0b0c77a34cab5014a2c24fc
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Signed-off-by: chao.an <anchao@xiaomi.com>
Bug caused increase of fifo->rx_sem with each received msg until finally after 32767 messages get into
DEBUGASSERT(sem->semcount<SEM_VALUE_MAX);
or stopping receiving anything at all without debug, while tx was working.
issue #1354
Because user may replace math library with other implementation
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Idb5f2a8b2a70302c8561553b3bcbc40529b5257f
In the previous implementation, cxd56_stop() checked the internal
state before sending AUDIO_MSG_STOP to the message queue. However,
if the worker thread took time to turn on AMP, cxd560_stop() was
not able to send the message and caused a deadlock.
This commit fixes this issue by always sending AUDIO_MSG_STOP
regardless of the internal state.
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
The video stream driver must be intialized from the board to comply with NuttX
NOTE:
Please remove the initalization from any camera example
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Fix the build error by initializing the variables before we perform
th querry for the ext control.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
so the lower half driver don't need include the specific board.h
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Icf6638a6865bac42150b5957376e55909f041d40
and let USERLED_LOWER depends on ARCH_HAVE_LEDS instead
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ie03e76d90b61a3d8d3457ccdd319a247b6075fa8
so the lower half driver don't need include the specific board.h
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I2ff5c30049a5c5e8ee90baea56e9f4cb1a8a4f87
Move global variable declaration out of include/nuttx/video/video.h and into the file where it is initialized. With some toolchains/environments, declaring globals in header files results in multiply defined symobl errors at link time. This corrects that build problem.
Reported by 권석근 <kwonsksj@gmail.com>:
I found a bug at "pty.c" during ssh server implementation.
When I turn on CONFIG_SERIAL_TERMIOS and OPOST|ONLCR on pty device
for nsh console's stdin/stdout (ssh shell service), I've got system crash.
Bugs at line 687 of pty.c, pty_write()
ntotal++;
when converting '\n' to '\r\n', pty_write() will return more than requested
(+1, for example) length. and this will break caller lib_fflush(), line 150
of lib_libfflush.c.
When she get (libfflush()) bytes_nwritten which is greater than nbuffer,
nbuffer goes to negative at line 150 and eventually destroys
*stream->fs_bufpos at line 163 of lib_libflush.c
Removing ntotal++; line 687 of pty.c will fix this bug.
BTW, nsh using ptm/pty as a ssh shell service works great with libssh +
mbedtls.
Add recording support to the Nuttx audio driver for Spresense.
- Supports 16 bit data with 48 kHz sample rate only for now.
- Supports 1 (dual mono) 2 or 4 channels.
- Only analog mics have been tested so digital is considered
unsupported.