Summary:
- When sending an AT command during receiving a bulk packet,
the bulk packet might be put in the AT command response.
- To handle such the case, gs2200m_send_cmd2() is newly
introduced instead of using gs2200m_send_cmd(dev, cmd, NULL)
Impact:
- All use cases that send an AT command in gs2200m.c
Testing:
- Tested with renew and nxplayer with spresense:wifi
Reported-by: Masatoshi Ueno <Masatoshi.Ueno@sony.com>
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Removes the family identifier from the device configuration, since the device
family is already part of the rom code and the underlying logic does know how
to extract this information.
include/nuttx/1wire drivers/sensors
stm32f103-minimim
Signed-off-by: Marco Krahl <ocram.lhark@gmail.com>
The following changes where added.
- Removes dependency to slave structure. Selecting a device on the bus only
requires the unique romcode.
- Make search operation mutual exclusive on the bus. This is necessary to
prevent another driver instance from making a transition on the bus at
the same time.
- Skip also rom when only 1 slave is expected on the bus. Physical
connected devuce should be indicated by the maxslave paramter during
initializing, not the reigstered slaves.
- Fixes some compiler warnings in existing ds28e17 driver.
Signed-off-by: Marco Krahl <ocram.lhark@gmail.com>
Summary:
- When receiving a UDP packet partially, the rest of the packet
must be discarded.
Impact:
- None
Testing:
- Tested with a UDP sample program
Reported-by: Masatoshi Ueno <Masatoshi.Ueno@sony.com>
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Ken Pettit has submitted the ICLA and we can migrate the licenses
to Apache.
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>
This adds a sensor driver for the hyt271, hyt221, and hyt939 sensor module from
vendor iST (Innovative Sensor Technology). This sensor type is connected via i2c
bus and allows the measurement of relative humidity and temperature.
Each driver instance supports two different character device for each type
(/dev/sensor/tempX and /dev/sensor/humiX).
This driver also supports changing the i2c address of one connected sensor on
the bus. This requires a callback to the platform-specific board logic which
must ensure a power-on reset.
Optional the driver allows setting up a read interval for fetching sensor data.
This is done by a worker thread and can be useful when watching several sensors
via poll() by the userspace application.
Signed-off-by: Marco Krahl <ocram.lhark@gmail.com>
MIRTOS4BES-22
since -ENOTTY is an expected code to indicate IOCTL isn't supported
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I62cf58c514be696327ad769ab2f35099154bcb42
Marco Krahl has submitted the ICLA and we can migrate the licenses
to Apache.
Gregory Nutt, S.A has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
This change makes it so that the timeout is set as part of the SDIO_WAITENABLE call instead of the SDIO_EVENTWAIT call. By doing so, you eliminate all opportunity for a race condition.
stm32h7:sdmmc Check if busy ended early
Ales Verbic has submitted the ICLA and we can migrate the licenses
to Apache.
Uros Platise has submitted the ICLA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Several licenses were missed in the initial work
David Sidrane 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>
Laurent Latil 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>
Matous Pokorny has submitted the ICLA and we can migrate the licenses
to Apache.
DataVision s.r.o. 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>
Pierre-Noel Bouteville has submitted the ICLA and we can migrate the licenses
to Apache.
David Sidrane 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>
Uros Platise has submitted the ICLA and we can migrate the licenses
to Apache.
David Sidrane has submitted the ICLA and we can migrate the licenses
to Apache.
Bob Feretich 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>
DS Automotion GmbH 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>
Robert A. Feretich has submitted the ICLA and we can migrate the licenses
to Apache.
RAF Research LLC has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
Michael Jung 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>
Matias Nitsche 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>
Mateusz Tomasz Szafoni 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>
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>