summaryrefslogtreecommitdiffstats
path: root/bsps/shared (follow)
Commit message (Collapse)AuthorAgeFilesLines
* grlib/genirq: Taking into account that it could be more than one ISR ↵Moyano, Gabriel2021-04-161-2/+2
| | | | | | enabled/disabled Closes #4385
* leon, l2cache: prevent unused diagnostic accessMartin Aberg2021-03-071-2/+2
| | | | Update #4315.
* leon, ahbstat: register definitions for AHBSTAT version 1Martin Aberg2021-03-071-0/+8
| | | | Update #4314.
* leon, grspw_router: added router_port_link_div()Martin Aberg2021-03-071-0/+5
| | | | | | Allows user to set SpaceWire run clock divisor for an individual port. Update #4313.
* leon,ckinit: avoid assuming 1MHz timer pre-scaler clockDaniel Hellstrom2021-03-071-4/+3
| | | | Update #4310.
* leon,greth: added support for variable sized descriptor table sizesDaniel Hellstrom2021-03-071-7/+15
| | | | | | | | | | | | The descriptor table size is equal to its alignment and set when configuring the HW IP through VHDL generics. This SW patch simply probes the HW how large the RX/TX descriptor tables are and adjusts accordingly. The number of descriptors actual used are controlled by other settings (rxDescs and txDescs) controlled by the user. Update #4308.
* leon,grcan: split out GRCAN non-FD specific support in separate fileDaniel Hellstrom2021-03-073-405/+436
| | | | Update #4307.
* leon,grcanfd: split out GRCANFD specific support in separate fileDaniel Hellstrom2021-03-074-627/+687
| | | | Update #4307.
* leon,grcan: added support for GRCANFDDaniel Hellstrom2021-03-071-16/+568
| | | | | | | | | | | | | The new GRCAN_FD IP supports CAN FD standard and is mostly backwards compatible with GRCAN SW interface. The GRCAN driver have been extended to support the GRCANFD IP using the same driver. Additional functions have been added that uses a new CAN FD frame format and read/write/baud-rate functions that supports both GRCANFD and GRCAN. To keep the SW API fully backwards compatible with GRCAN, the old functions remain. Update #4307.
* leon,occan: use common CAN baud-rate calculation routineDaniel Hellstrom2021-03-071-110/+41
| | | | Update #4306.
* leon,grcan: use common CAN baud-rate calculation routineDaniel Hellstrom2021-03-071-114/+20
| | | | Update #4306.
* leon,can: introduce common CAN baud-rate calculation functionDaniel Hellstrom2021-03-072-0/+145
| | | | | | | Reimplemented the baud-rate algorithm from scratch to cope with GRCAN, GRCANFD and OC_CAN devices. Update #4306.
* grlib,ambapp: added new IP core IDsDaniel Hellstrom2021-03-071-1/+20
| | | | Update #4305.
* leon,grspw: fix for SET_PACKET_SIZEDaniel Hellstrom2021-03-071-0/+7
| | | | | | | | | | | | When the DMA table has been allocated dynamically, the IOCTL_SET_PACKETSIZE will trigger an issue where pDev->rx and pDev->tx are not updated with the new DMA tables base address. Instead the old pointers are used. There is no point in reallocting the DMA tables because there is no configuration option to it. Therefore the DMA tables allocation is moved to a separate function never called from SET_PACKETSIZE. Update #4304.
* leon,gr1553b: Only align allocated memory. Verify alignment of memory.Arvid Bjorkengren2021-03-073-83/+147
| | | | Update #4303.
* leon,gr1553b: set codec versionArvid Bjorkengren2021-03-071-0/+4
| | | | | | | This is enables the updated codec for GR740 and is backwards compatible with all other versions of the IP. Updates #4275.
* leon,gr1553rt: Fixed spinlock unlockArvid Bjorkengren2021-03-071-1/+1
| | | | Update #4274.
* leon,gr1553rt: Fixed memory leakArvid Bjorkengren2021-03-071-5/+11
| | | | Update #4274.
* rtems: Improve rtems_interrupt_server_create()Sebastian Huber2020-11-251-13/+17
| | | | | | | | Also start interrupt server tasks on processors which do not have a scheduler. Applications may dynamically manage processors using rtems_scheduler_remove_processor() and rtems_scheduler_add_processor(). Close #4190.
* bsps: Fix rtems_interrupt_server_delete()Sebastian Huber2020-11-251-0/+2
| | | | | | | The ISR lock must be destroyed to prevent memory corruption if RTEMS_PROFILING and RTEMS_SMP is enabled. Close #4189.
* rtems: Add rtems_interrupt_server_create()Sebastian Huber2020-08-031-116/+249
| | | | | | | | | | | | | | | | | | Add rtems_interrupt_server_destroy(). Before this patch, the only way to create interrupt servers was rtems_interrupt_server_initialize(). This function creates the default interrupt server and in SMP configurations additional interrupt servers for the additional processors. The interrupt server is heavily used by libbsd. This includes the epoch based reclamation which performs time consuming resource and memory deallocation work. This does not work well with time critical services, for example an UART over SPI or I2C. One approach to address this problem is to allow the application to create custom interrupt servers with the right priority and task properties. The interrupt server API accounted for this, however, it was not implemented before this patch. Close #4033.
* bsp/shared/clock: Reset Clock_driver_isrs to correct valueJan Sommer2020-04-031-1/+1
| | | | | | | CLOCK_DRIVER_ISRS_PER_TICK is the configuration define, CLOCK_DRIVER_ISRS_PER_TICK_VALUE is the actual value of ISRS per clock tick, therefore use this one to reset the Clock_driver_isrs after each tick.
* bsps: Remove legacy interrupt API from defaultSebastian Huber2020-03-131-1/+0
| | | | | This fixes linker issues on the powerpc/virtex4 and powerpc/virtex5 BSPs.
* bsps/clock: Use _SMP_Get_processor_maximum()Sebastian Huber2020-02-251-1/+1
| | | | | | | Use a specific test to enable the fast idle mode instead of using the rtems_configuration_is_smp_enabled() workaround. Update #3876.
* drvmgr: Fix determination of prefix in grlib uart driverDennis Pfau2020-02-201-1/+1
| | | | | drvmgr_get_dev_prefix returns 0 if a prefix was found. Therefore the if condition needs to check for 0, i.e. DRVMGR_OK.
* libchip/ns16550: Allow user calculate baud divisorG S Niteesh2020-02-161-0/+2
| | | | | | | | This patch will allow the user to pass a function to calculate the baud divisor. This will allow for more flexibility, since for some BSPs like raspberrypi, the calculation of baud divisor is different from what is in the current driver.
* config: Add CONFIGURE_DIRTY_MEMORYSebastian Huber2020-02-061-13/+0
| | | | | | | Replace the BSP_DIRTY_MEMORY BSP option with a CONFIGURE_DIRTY_MEMORY configuration option. Update #3843.
* Use RTEMS_SYSINIT_ORDER_LAST_BUT_5Sebastian Huber2020-02-041-1/+1
| | | | | | | | Use RTEMS_SYSINIT_ORDER_LAST_BUT_5 instead of RTEMS_SYSINIT_ORDER_LAST to allow applications and support functions to place system initialization handlers behind the standard handlers. Update #3838.
* bsps: Rework work area initializationSebastian Huber2020-02-042-18/+39
| | | | | | | | | | | | | | | | | | | | The work area initialization was done by the BSP through bsp_work_area_initialize(). This approach predated the system initialization through the system initialization linker set. The workspace and C program heap were unconditionally initialized. The aim is to support RTEMS application configurations which do not need the workspace and C program heap. In these configurations, the workspace and C prgram heap should not get initialized. Change all bsp_work_area_initialize() to implement _Memory_Get() instead. Move the dirty memory, sbrk(), per-CPU data, workspace, and malloc() heap initialization into separate system initialization steps. This makes it also easier to test the individual initialization steps. This change adds a dependency to _Heap_Extend() to all BSPs. This dependency will be removed in a follow up change. Update #3838.
* bsps/irq: fix resource leak in irq-server.cGedare Bloom2020-01-031-0/+1
| | | | | | Resource leak identified by Coverity (CID 1456675). The value of instances is leaked in case some but not all irq servers are created. It should be stored in bsp_interrupt_server_instances.
* rtems: Add and use rtems_object_get_local_node()Sebastian Huber2019-12-133-3/+3
| | | | Update #3841.
* mpci: Simplify MPCI configurationSebastian Huber2019-12-111-18/+25
| | | | Use watchdog for shared memory driver instead of a Classic API Timer.
* clock: Simplify driver initializationSebastian Huber2019-12-112-29/+3
| | | | | | Use a system initialization handler instead of a legacy IO driver. Update #3834.
* rtems: Add rtems_interrupt_server_entry_move()Sebastian Huber2019-09-201-0/+17
| | | | | | | | | The use case for this function is the libbsd. In FreeBSD, the interrupt setup and binding to a processor is done in two steps. Message based interrupts like PCIe MSI and MSI-X interrupts can be implemented through interrupt server entries. They are setup at the default interrupt server and may optionally move to an interrupt server bound to a specific processor.
* record: Allow tracing of ISR disable/enableSebastian Huber2019-09-061-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Directly use the CPU port API in boot_card() to allow tracing of the higher level interrupt disable/enable routines, e.g. _ISR_Local_disable() and _ISR_Local_enable(). Currently, there is no configuration option to enable this. Below is a patch. It may be used to investigate some nasty low level bugs in the system. Update #3665. diff --git a/cpukit/include/rtems/score/isrlevel.h b/cpukit/include/rtems/score/isrlevel.h index c42451d010..46d361ddc2 100644 --- a/cpukit/include/rtems/score/isrlevel.h +++ b/cpukit/include/rtems/score/isrlevel.h @@ -40,6 +40,10 @@ extern "C" { */ typedef uint32_t ISR_Level; +uint32_t rtems_record_interrupt_disable( void ); + +void rtems_record_interrupt_enable( uint32_t level ); + /** * @brief Disables interrupts on this processor. * @@ -56,8 +60,7 @@ typedef uint32_t ISR_Level; */ #define _ISR_Local_disable( _level ) \ do { \ - _CPU_ISR_Disable( _level ); \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ + _level = rtems_record_interrupt_disable(); \ } while (0) /** @@ -72,10 +75,7 @@ typedef uint32_t ISR_Level; * _ISR_Local_disable(). */ #define _ISR_Local_enable( _level ) \ - do { \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ - _CPU_ISR_Enable( _level ); \ - } while (0) + rtems_record_interrupt_enable( _level ) /** * @brief Temporarily enables interrupts on this processor. @@ -98,9 +98,8 @@ typedef uint32_t ISR_Level; */ #define _ISR_Local_flash( _level ) \ do { \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ - _CPU_ISR_Flash( _level ); \ - RTEMS_COMPILER_MEMORY_BARRIER(); \ + rtems_record_interrupt_enable( _level ); \ + _level = rtems_record_interrupt_disable(); \ } while (0) /
* Add and use THREAD_DEFAULT_MAXIMUM_NAME_SIZESebastian Huber2019-07-301-1/+1
|
* bsps: Fix warnings in grethSebastian Huber2019-05-272-7/+7
|
* score: Simplify _SMP_Multicast_action()Sebastian Huber2019-05-201-2/+23
| | | | | | Move resposibility to disable thread dispatching to the caller of _SMP_Multicast_action(). Using an interrupt disable for this purpose is questionable.
* score: Add _SMP_Broadcast_action()Sebastian Huber2019-05-201-2/+2
|
* bsps: Always build generic interrupt supportSebastian Huber2019-05-162-0/+59
| | | | | | | This makes it possible to write tests for the generic interrupt controller support. Update #3269.
* score: Use processor mask in _SMP_Multicast_actionSebastian Huber2019-04-121-2/+2
| | | | Processor_mask is the internal data type to deal with processor sets.
* score: Rename _SMP_Get_processor_count()Sebastian Huber2019-04-111-2/+4
| | | | | | | Rename _SMP_Get_processor_count() in _SMP_Get_processor_maximum() to be in line with the API level rtems_scheduler_get_processor_maximum(). Update #3732.
* rtems: Add rtems_scheduler_get_processor_maximum()Sebastian Huber2019-04-091-2/+2
| | | | | | | | | | | Add rtems_scheduler_get_processor_maximum() as a replacement for rtems_get_processor_count(). The rtems_get_processor_count() is a bit orphaned. Adopt it by the Scheduler Manager. The count is also misleading, since the processor set may have gaps and the actual count of online processors may be less than the value returned by rtems_get_processor_count(). Update #3732.
* z85c30.c: Do not process 0 baud and return an error (CID 1399713)Joel Sherrill2019-03-141-0/+9
|
* Add rtems_board_support_package()Sebastian Huber2019-03-141-0/+6
|
* bsps: Adjust shared Doxygen groupsSebastian Huber2019-03-081-0/+8
| | | | Update #3706.
* bsps: Adjust architecture Doxygen groupsSebastian Huber2019-03-044-24/+10
| | | | | | | | | | - Use CamelCase as it is not used in our C code. Enables simple search and replace. - Prefix with "RTEMS" to aid deployment and integration. It aids searching and sorting. Update #3706.
* Remove explicit file names from @fileSebastian Huber2019-02-281-1/+1
| | | | | | This makes the @file documentation independent of the actual file name. Update #3707.
* bsps/irq: Fix interrupt server init (SMP)Sebastian Huber2019-02-071-4/+7
|
* grlib: make memory coherency cpu-independentJiri Gaisler2019-01-221-1/+1
| | | | Update #3678.