Commit Graph

2668 Commits

Author SHA1 Message Date
Masayuki Ishikawa
ab96e3fdc7 Merged in masayuki2009/nuttx.nuttx/lc823450_smp_improvement (pull request #554)
lc823450 smp improvement

* arch/arm/src/common: Apply irq_spin APIs to modifyregXX

    Replace enter_critical_section with spin_lock_irqsave.
    Replace leave_critical_section with spin_unlock_irqrestore.

    Please see 6150299f54 as well.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* arch/arm/src/lc823450: Do not use modifyreg32() to enable Mutex.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* arch/arm/src/lc823450: Modify IRQ control for i2s

    Interrupt will be handled on CPU0 with this change.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* arch/arm/src/lc823450: Apply irq_spin APIs to dma/syscontrol/usbdev.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* configs/lc823450-xgevk: Assign CPU1 to lpwork

    This change will improve load balancing for networking with RNDIS.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* drivers/audio/wm8776.c: Improve stability in SMP mode

    Apply irq_spin APIs to improbe performance.
    Repeat to process a message to avoid deadlock.

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* configs/lc823450-xgevk: Enable SPINLOCK_IRQ and NXPLAYER in rndis

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-12-08 12:31:34 +00:00
Gregory Nutt
8bc90a1899 This adds basic architectural support for the LPC546xx family and includes support for the LPCXpresso-LPC54628 board. The basic NSH port is almost complete... still lacking GPIO support and LED support. There are still no significant drivers available.
Squashed commit of the following:

    arch/arm/src/lpc54xx:  Finish off some missing logic.  Complete now execpt for GPIO and LED support.
    arch/arm/src/lpc54xx:  Add lpc54_clrpend.c
    arch/arm/src/lpc54xx:  Serial driver is complete and compiles.
    arch/arm/src/lpc54xx:  Add beginning of a serial driver (still missing some logic)
    arch/arm/src/lpc54xx:  Fleshes out low level USART intialization.
    arch/arm/src/lpc546xx/Kconfig: Add hooks to integrate with common seril upper half.
    arch/arm/src/lpc54xx:  Beginning of USART console support.
    arch/arm/src/lpc54xx: Completes very basic clock configuration.
    arch/arm/src/lpc54xx:  Add clocking logic (still not complete)
    arch/arm/src/lpc54xx:  Beginning of PLL configuration logic.
    arch/arm/src/lpc54xx:  Fix a few things from first compile attempt.  Compilation cannot work until I at least finish the clock configuration logic.
    arch/arm/src/lpc54xx: Addes some SysTick logic.
    arch/arm/src/lpc54xx:  Completes basic startup logic (sans clock configuration) and interrupt configuration.
     arch/arm/src/lpc54xx:  Add generic ARMv7-M start-up logic (needs LPC54628 customizations); add emtpy file that will eventually hold the clock configuration logic.
    arch/arm/src/lpc54xx:  Add (incomplete) SYSCON register definition header file.
    arch/arm/src/lpc54xx:  Add FLEXCOMM header file.
    arch/arm/src/lpc54xx:  Bring in tickless clock logic from LPC43; configs/lpcxpresso-lpc54628: mount procfs if enabled.
    arch/arm/src/lpc54xx: Add RIT clock definitions; add SysTick initialization (not finished)
    LPC54xx and LPCXpresso-LPC54628: add more boilerplate files and stubbed out files.
    arch/arm/src/lpc54xx:  Add (incomplete) USART header file.
    Add another condition to a Kconfig; refresh a defconfig.
    arch/arm/src/lpc54xx/chip: Add LPC54628 memory map header files.
    configs/lpcxpresso-lpc54628:  Add basic build files for the LPCXpresso-LPC54628
    arch/: Basic build directory structure for the LPC54628
2017-12-07 13:30:02 -06:00
Jussi Kivilinna
ce88bc212d From c73dd8973accd312ca7675fde044df80e9cc62d5 Mon Sep 17 00:00:00 2001
From: Jussi Kivilinna <jussi.kivilinna@haltian.com>
Date: Thu, 7 Dec 2017 13:00:14 +0200
Subject: [PATCH] drivers/pipes: poll: fix off-by-one error in calculation of bytes in the buffer

Buffer calculation in pipe poll setup is off-by-one when read indexis larger than write index. This causes poll() not getting POLLINwhen buffer has one byte as calculation gives zero bytes in buffer.

Reproducible with:

  {
    char buf[8] = { 0, };
    int fds[2];
    struct pollfd in_pfd;

    pipe2(fds, 8);

    write(fds[1], buf, 7);
    read(fds[0], buf, 7);
    write(fds[1], buf, 1);

    in_pfd.fd = fds[0];
    in_pfd.events = POLLIN;
    ret = poll(&in_pfd, 1, -1); // pipe bug => stuck waiting
    assert(ret == 1);
  }
2017-12-07 07:12:11 -06:00
Ekaterina Kovylova
59a5c24739 drivers/mtd: Add a driver for Macronix MX35LFxGE4AB serial NAND flash. 2017-11-29 07:15:36 -06:00
Gregory Nutt
2fb52cf3d9 Framebuffer Driver: Small modification convention for multi-planar displays (of which there are none). 2017-11-29 07:06:53 -06:00
Gregory Nutt
1338360ff7 Fix a few typos. 2017-11-28 13:40:07 -06:00
Gregory Nutt
0c614311af Eliminate some warnings 2017-11-28 12:49:36 -06:00
Alan Carvalho de Assis
5a814a773d drivers/input/nunchuck.c: Add Nintendo Wii Nunchuck driver 2017-11-28 12:10:06 -06:00
Gregory Nutt
54f43ea1f1 Fix typos in Kconfig files: LCD_PACKEDMSFIRST, not LCD_PACKEDFIRST. 2017-11-26 07:57:17 -06:00
Gregory Nutt
5328e3bafb configs/: CONFIG_QENCODER was renamed to CONFIG_SENSORS_QENCODER: update occurrences in several Kconfig files 2017-11-25 18:46:43 -06:00
Gregory Nutt
c2c2c4f111 drivers/lcd: Make LCD driver configuration indepently selected from NX graphics configuration. This makes things awkward and loses some error checking but is a necessary step in order to make LCD drivers usable when the NX graphics system is disabled. 2017-11-25 13:13:30 -06:00
Gregory Nutt
3657723208 drivers/lcd: Add support for external LCD initialization required by some board logic. configs/zpa214xpa: Tried to get the LCD working again unsuccessfully. Too much bit rot I suppose. 2017-11-25 11:41:21 -06:00
Anthony Merlino
50f05d7514 Merged in antmerlino/nuttx/rndis-debug-build-error (pull request #539)
USB RNDIS - Fixes minor build error while using USB RNDIS with USB debugging information enabled

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-22 18:55:39 +00:00
Gregory Nutt
84de1fed9b Fix previous commit: In calculating the length of a run, the width has to be updated AFTER the start X position has been modified. 2017-11-22 06:13:56 -06:00
Gregory Nutt
9a4c3bbe99 drivers/lcd_framebuffer.c: If BPP is less then 8, then we need to byte-align the update region. 2017-11-22 05:35:33 -06:00
Gregory Nutt
f3b37e5da3 fs/procfs/fs_procfsprogrem: Add /proc/progmem. This is an alternative way to get the information that was previoulsy available in apps/system/free. apps/system/free was removed beause it made illegal calls into the OS violating the portable interface. This new procfs entry provides the same information with no such violation. 2017-11-13 09:08:39 -06:00
Masayuki Ishikawa
14e2b6dc5b Merged in masayuki2009/nuttx.nuttx/stm32f4discovery_rndis (pull request #533)
RNDIS support on STM32F4Discovery

* stm32f4discovery: Add stm32_netinit.c to avoid a compilation error

* stm32f4discovery: Add rndis initialization in stm32_bringup.c

    NOTE: MAC address for the host side starts 0xaa.  This assignment
    scheme should be fixed later.

* stm32f4discovery: Add rndis configuration

    NOTE: STM32F4Discovery + DM-STF4BB

* drivers/usbdev/rndis.c: Fix some issues in rndis.c

    Introduce rndis_transmit() and change rndis_rxdispatch() to avoid
    packet corruption. Introduce max packet size for dual speed which
    is mainly used for high speed mode. Fix adjusting MTU warning
    on Linux host. Fix data corruption if a packet size excceds MTU.

    NOTE: Max packet size is not configured dynamically. This should
    be fixed in the future version.

* stm32f4discovery: Modify #ifdef condition for rndis in stm32_bringup()

* drivers/usbdev/rndis.c: Change HPWORK to ETHWORK

* drivers/usbdev/rndis.c: Merge the commit 07b98ccbb5

    Previous commit b09365784a was based on old rndis.c thus resulted
    in reverting the commit 07b98ccbb5. This change merges the commit.

    NOTE: In the commit 07b98ccbb5, max packet size of bulkout was
    assumed to be 64. In this commit, priv->epbulkout->maxpacket is
    used instead.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-13 08:55:41 +00:00
Juha Niskanen
25c1f4407e drivers: fix few compiler warnings about nxsem_post 2017-11-10 09:01:39 -06:00
Gregory Nutt
8008875f35 Cosmetic spacing and used UNUSEd macro 2017-11-09 12:25:13 -06:00
Jussi Kivilinna
509d729825 drivers/power/bq2429x.c: Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF 2017-11-08 13:08:54 -06:00
Sakari Kapanen
07b98ccbb5 drivers/usbdev/rndis.c: fix packet receiving logic. The logic didn't take single-byte termination frames in account. 2017-11-08 07:33:09 -06:00
Gregory Nutt
349b513978 Very trivial changes from review of last PR 2017-11-08 06:34:23 -06:00
Masayuki Ishikawa
51b19d5f38 Merged in masayuki2009/nuttx.nuttx/lc823450 (pull request #531)
lc823450-xgevk audio support

* arch/arm/src/lc823450: Add IPL2 support

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* configs/lc823450-xgevk: Add IPL2 support

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* libc/audio: Fix compilation error in lib_buffer.c

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* drivers/audio: Add WM8774 support

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* arch/arm/src/lc823450: Add I2S support

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

* configs/lc823450-xgevk: Add WM8774 support

    Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-08 12:25:13 +00:00
Alan Carvalho de Assis
7c5f329294 drivers/lcd/max7219.c: Add support for MAX7219 vertically organized display. 2017-11-07 13:20:03 -06:00
Gregory Nutt
7deb24484c This comment converts the underlying IPC used by the UserFS from Unix domain local sockets to UDP LocalHost loopback sockets. The problem with the local sockets is that they do require operations on the top level psuedo-file system inode tree. That tree must be locked during certain traversals such as enumerate mountpoints or enumerating directory entries.
This conversion is unfortunate in the sense that Unix local domain sockets are relatively lightweight.  LocalHost UDP sockets are much heavier weight since they rely on the full UDP stack.  If anyone is up for a complete redesign, then using some shared memory and a POSIX message queue would be lightweight again.

This commit also fixes several bugs that were not testable before the inode tree deadlock.  I cannot say that the logic is 100% stable but it does not have basic functionality.

Squashed commit of the following:

    fs/userfs:  Order locking so that access to the shared I/O buffer is also locked.
    fs/userfs:  Converts to use LocalHost UDP loopback for IPC.
2017-11-05 12:25:58 -06:00
Mateusz Szafoni
2fc5237854 Merged in raiden00/nuttx (pull request #529)
Master

* cosmetics

* stm32_hrtim: add helper macros

* smps: cosmetics

* stm32f33xxx_adc: injected channels support, fix some definitions, add interface to disable interrupts

* stm32f334-dsico: beginning of lower-half driver for SMPS (buck-boost onboard converter)

* nucleo-f334r8/highpri: missing ADC trigger configuration

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-05 14:15:04 +00:00
Gregory Nutt
0942b5441d Update some comments 2017-11-04 14:33:20 -06:00
Gregory Nutt
205fe8053f Kconfigs: Add CONFIG_LCD_UPDATE that works like CONFIG_NX_UPDATE but can be enabled without enabling the graphics subsystem. 2017-11-04 14:08:21 -06:00
Alan Carvalho de Assis
829e6520e3 drivers/lcd/max7219.c: Add support to MAX7219 LED Matrix as LCD interface 2017-11-04 07:54:48 -06:00
Gregory Nutt
ac40630452 wireless/ieee802154: Fix a warning found in build testing. Mouse input: Cosmetic changes while reviewing logic. 2017-11-03 09:21:19 -06:00
Gregory Nutt
f3286d83e7 Costmetic 2017-11-02 19:17:33 -06:00
Gregory Nutt
29309e63aa Eliminate some warnings from building testing. 2017-11-02 17:27:48 -06:00
Gregory Nutt
e52bc92238 drivers/mtd/filemtd.c: Don't use file descriptors... Use the internal file system interfaces so that the loop device can be shared across threads. 2017-11-02 17:07:08 -06:00
Gregory Nutt
f9e7b84727 drivers/loop: Don't use file descriptors... Use the internal file system interfaces so that the loop device can be shared across threads. 2017-11-02 16:31:56 -06:00
Frank Benkert
c6942f6137 drivers/serial/serial.c: Optimize wait time in tcdram() for buffer emptying
According to the specification, the close function must wait until all data
has been written before it closes the file (except O_NONBLOCK is set). The
maximum waiting time for this is not specified.

To be able to edit the file list of the process, the close function has to lock
the file list semaphore. After that the close function of the serial driver is
called.

Waiting for the complete transmission of all data is done in the serial driver.
This causes the semaphore to remain locked until all data has been sent.
However, no other thread of the process can edit the file list for that time
(open, close, dup2, etc.). This is not optimal in a multithreaded environment.
Therefore, we have to keep the waiting time within the driver as short as possible.
2017-11-02 08:53:14 -06:00
Anthony Merlino
14fb37c995 Merged in antmerlino/nuttx/sixlowpan-mac802154 (pull request #526)
ieee802154: Simplifies notify() and rxframe() calls to a single notify() call. dataind's and all other "notifs" are now "primitives" which aligns with standard terminology

* mac802154: Adds missing breaks from case statement

* sixlowpan: Fixes bad logic where ACK is not requested if address is not a broadcast

* ieee802154: Simplification of "notifs" and "datainds" to generic primitives passed via a single notify call to the layer above the MAC

* Directories.mk should reference CONFIG_WIRELESS instead of CONFIG_DRIVERS_WIRELESS

* xbee_netdev: Network must be locked when calling sixlowpan_input

* sixlowpan: Reassembly buffer can't be freed if provided by radio driver

* sixlowpan: Don't free IOB if there is an error processing it as the MAC will try to pass it along to another receiver

* ieee802154: Adds basic logging to ieee802154_primitive.c

* Minor fixes after rebase

* xbee: Adds AT query timeout to retry if XBee doesn't respond to request

* same70-xplained: Adds Xbee support. Makes mikroBus slot Kconfig 'choice'

* mac802154: Removes unused function declaration

* drivers/mrf24j40: Fixes compilation error using . operator rather than -> operator

* mac802154_device: Changes a few mac802154_primtive_free's to ieee802154_primitive_free() and changes notif to primitive in a couple places.

* mac802154: Adds promiscous mode logic to bypass parsing of incoming frames. MAC char device also checks for promiscous mode and passes whole frames including header and FCS to the application if promiscous mode is enabled.

* sixlowpan: Fixes logic to correctly check if packet is large enough to include header.  This would cause packets to be considered too small when they are sufficiently sized.

* sixlowpan: Fixes forwarding logic to use forwarding device rather than received device to look up destination link layer address

* net/ipforward: Fixes typo that caused build error when IP forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as well.

* configs/same70-xplained: Simple spelling fix

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-11-01 20:15:21 +00:00
Anthony Merlino
02721f9d95 net/icmpv6: Add some header file necessary for correct build.
drivers/wireless/ieee80211:  Fix typos and spelling errors as needed for Photon build.
2017-11-01 06:58:33 -06:00
Dmitriy Linikov
61372551e9 Merged in hardlulz/modem-3.0-nuttx/fix-stmpe811-gpio (pull request #523)
Fix GPIO operation of STMPE811 driver.

Fixed issues:
1. STMPE811_GPIO_DIR was defined for register name
   and later was redefined to be the pin direction mask
   for `stmpe811_gpioconfig`

   I decided to change register name to be STMPE811_GPIO_DIR_REG,
   and keep pin direction mask STMPE811_GPIO_DIR, so that any
   external code that already use this driver will be unchanged.

2. The STMPE811 register GPIO_DIR uses bit value 1 for output
   and 0 for input, but `stmpe811_gpioconfig` set the opposite.

3. The call to `stmpe811_gpiowrite` from inside of `stmpe811_gpioconfig`
   leaded to deadlock.

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-10-31 16:54:28 +00:00
Gregory Nutt
cfc5f8fbaf drivers/net: Remove the old, unfinished Crystal LAN driver. I don't even have the hardware that it goes with anymore. 2017-10-28 10:27:00 -06:00
Alan Carvalho de Assis
b5f6d6c4f7 drivers/can/mcp2515.c: Fix BRP for SET_BITTIMING ioctl as well 2017-10-27 06:15:54 -06:00
Jussi Kivilinna
0ea4d2a11d sensors/lis2dh: fix use of obsolete dbg macro 2017-10-27 06:13:14 -06:00
Alan Carvalho de Assis
b0ce7753aa drivers/can/mcp2515.c: Fix the MCP2515 Bit Rate Prescale calculation. 2017-10-27 06:11:37 -06:00
Jussi Kivilinna
e557c3e8d5 drivers/sensors/lis2dh: fixes for self-test 2017-10-26 09:25:20 -06:00
Gregory Nutt
70c59a9d91 This commit adds support for semi-standard IPPROTO_ICMP6 sockets. This is a replacement for the non-standard ICMPv6 ping support that violated the portable POSIX OS interface.
Squashed commit of the following:

    net/icmpv6: IPPROT_ICMP6 socket logic now builds without error.
    net/icmpv6:  Add support for read-ahead and poll(). Initial commit is just cloned from ICMP with the appropriate name changes.
    configs/:  All defconfig filess that include CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and deselect CONFIG_DISABLE_POLL.
    Update NSH documention to show that ping6 is now a built in command.
    net/icmpv6:  Add icmpv6_sendto.c and icmpv6_recvfrom.c.  Initial versions are just clones from icmp/ with appropriate name changes.
    net/icmpv6:  Clone some ICMP socket logic as the beginning of support for ICMPv6 socket support.
    Rename CONFIG_NET_ICMPv6_PING to CONFIG_NET_ICMPv6_SOCKET.  Move prototype for icmpv6_ping from include/nuttx/net/icmpv6 to net/icmpv6/icmpv6.h
2017-10-24 11:23:08 -06:00
Gregory Nutt
fc0a5e19d0 drivers/bch: The character driver to block device access now supports an IOCTL to get the geomtry of the underlying block device. 2017-10-20 11:36:44 -06:00
Juha Niskanen
9653255cff Merged in juniskane/nuttx_stm32l4/stm32l1_stm32l4_rtc_update_pr (pull request #514)
STM32L1, STM32L4 RTC: add periodic interrupts, update L1 RTC implementation

* STM32L4 RTC: add support experimental CONFIG_RTC_PERIODIC

* STM32 RTC: separate STM32L1 RTC into a separate file

    STM32L1 RTC is very close to F4 or L4 versions, with two alarms
    and periodic wakeup support so backported L4 peripheral to L1.

* RTC: add periodic alarms to upper and lower halves

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-10-20 17:15:17 +00:00
Alan Carvalho de Assis
0be36a6ac1 drivers/sensors/apds9960.c: Use work_queue to read/process data when receive an IRQ 2017-10-20 08:54:44 -06:00
Jussi Kivilinna
fe9be72bec drivers/sensors/hts221: power-on sensor for loading calibration data 2017-10-20 08:33:44 -06:00
Alan Carvalho de Assis
3268a6ac5f drivers/sensor: Add driver for the APDS-9960 gesture sensor 2017-10-20 06:37:38 -06:00
Gregory Nutt
bc40403516 There was a reference counting problem in the TPC logic of net_clone(). net_clone() which is the common logic underlying dup() and dup2() for sockets. When net_clone() calls net_start_monitor() and net_start_monitor() returns a failure (because the underlying TCP connection) then net_clone() must back out the reference count on the structure. Problem noted by Pascal Speck and this implementation of the solution is based on his suggestion. 2017-10-19 11:09:23 -06:00