Commit Graph

35806 Commits

Author SHA1 Message Date
Sebastian Huber
32fe5724a8 bsps: Mark argument as unused
Update #4862.
2023-04-05 14:18:12 +02:00
Alan Cudmore
4021b87e00 spec: add riscv kendrytek210 variant build options
This patch includes the spec/build options for the riscv kendrytek210
BSP variant. It includes options to allow the frdme310arty console
UART to be used on multiple BSPS, device tree options, memory
options, and other required options for the variant.

Updates #4876
2023-03-28 14:04:04 -05:00
Alan Cudmore
26853a0624 bsps/riscv: add riscv/kendrytek210 BSP variant source changes
This patch adds support for the Kendryte K210 RISC-V BSP variant.
The SoC uses the existing Interrupt Controller, Timer, and console UART.
It only needs SoC specific initialization and an embedded device tree binary
similar to the polarfire SoC BSP.

Updates #4876
2023-03-28 14:04:04 -05:00
Alan Cudmore
ca1c4e70f5 bsps/riscv: add device tree source and device tree blob header for k210 bsp variant
This patch adds the k210 device tree source and the corresponding
device tree blob encoded in the header which is used for the
embedded device tree blob for the Kendryte K210 BSP variant.

Updates #4876
2023-03-28 14:04:04 -05:00
Kinsey Moore
acf4eb271c cpukit/jffs2: Avoid possible null deref
This was added with the writebuffer work and should have been protected
by the error check.
2023-03-23 10:33:52 -05:00
Kinsey Moore
7163014e3f bsps/xqspipsu: Add support for reading ECC
This adds a helper function to read the ECC status for an ECC unit in
SPI-attached NOR memory.
2023-03-22 13:30:08 -05:00
Kinsey Moore
ddafdfe9ba bsps/zynqmp: Use correct include path
The existing include path only works from inside the RTEMS build. This
fixes the include path to work both in the RTEMS build and with builds
of external apps since this file gets installed with the BSP.
2023-03-22 13:30:07 -05:00
Sebastian Huber
74a6b33f3b validation: Replace enum Event with defines
There is a Doxygen limitation that all compound names (enum, struct,
class, union, group) within a project must be unique.

Update #3716.
2023-03-17 15:55:39 +01:00
Sebastian Huber
3353d3f3ad doxygen: Add group for FreeBSD kernel header files 2023-03-17 08:47:28 +01:00
Sebastian Huber
45234f58e5 doxygen: Add test files to groups 2023-03-17 08:47:28 +01:00
Sebastian Huber
de6568ed99 validation: Fix test case group identifiers
Update #3716.
2023-03-17 08:47:28 +01:00
Sebastian Huber
eaecc4971a doxygen: Add files to groups and fix group scopes 2023-03-17 08:47:28 +01:00
Sebastian Huber
3264c8152b doxygen: Fix group identifiers 2023-03-17 08:47:28 +01:00
Sebastian Huber
a60b816fa7 bsps/arm: Fix wording 2023-03-17 07:25:34 +01:00
Sebastian Huber
11cc51ef27 bsps/riscv: Use per-CPU mtimecmp in clock driver
Use the mtimecmp from the PLIC/CLINT initialization in the clock driver.  This
register is defined by the device tree and does not assume a fixed mapping.
2023-03-17 07:25:34 +01:00
Sebastian Huber
cbddf5decd bsps/riscv: Fix riscv_get_hart_index_by_phandle()
Take a non-zero RISCV_BOOT_HARTID into account.
2023-03-17 07:25:34 +01:00
Sebastian Huber
e5233057be bsps/riscv: Make SMP start more robust
In SMP configurations, check that we run on a configured processor.  If not,
then there is not much that can be done since we do not have a stack available
for this processor.  Just loop forever in this case.  Do this in assemlby to
ensure that no stack memory is used.
2023-03-17 07:25:23 +01:00
Sebastian Huber
0e773420f7 rtems/test.h: Use __attribute__ 2023-03-16 16:17:40 +01:00
Karel Gardas
139bc390b5 score/arm: enhance ARMV7M MPU setup with capability to set control register
Due to API change, the patch also fixes affected BSPs and uses
value provided by MPU CTRL spec option there.

Sponsored-By:	Precidata
2023-03-16 15:40:22 +01:00
Karel Gardas
8f6d4b7d96 spec: add MPU CTRL option to be usable on ARMV7M based BSPs
The patch also enables usage of the option on imxrt and stm32h7 based BSPs.

Sponsored-By:	Precidata
2023-03-16 15:40:22 +01:00
Sebastian Huber
19ce49c5c6 doxygen: Document hash algorithm files 2023-03-16 07:38:44 +01:00
Sebastian Huber
51fdc8f9b1 cpuuse: Add implementation Doxygen group 2023-03-16 07:38:44 +01:00
Kinsey Moore
caffdc4dab bsps/zynqmp: Add JFFS2 NAND adapter
This adds the glue code necessary to allow JFFS2 to operate on top of
NAND memory hosted by the XNandPsu peripheral/driver.
2023-03-15 13:29:12 -05:00
Kinsey Moore
5db68a5859 cpukit/jffs2: Add support for NAND under JFFS2
This adds write buffer and bad block support required for JFFS2
operation on NAND devices. This also adds the minor modifications
necessary for RTEMS support in the Linux header stubs and in wbuf.c.
Memory and NOR backed applications should experience no difference in
operation since they do not expose the callbacks required for write
buffer support.
2023-03-15 13:29:12 -05:00
Kinsey Moore
5635ec3362 cpukit/jffs2: Import wbuf.c from upstream
This pulls in wbuf.c from the upstream Linux repository at the state
specified in VERSION.
2023-03-15 13:29:12 -05:00
Kinsey Moore
8eb666fa96 cpukit/jffs2: Initialize and lock mutexes
Mutexes must be locked before they can be unlocked. JFFS2 doesn't
currently see this as an issue because all mutex operations are no-ops.
2023-03-15 13:29:12 -05:00
Kinsey Moore
10ff982834 bsps/xnandpsu: Allow use of both chip selects
By default, the Xilinx NAND driver does not probe the second chip
select. This alteration allows the second half of chips to be
detected when present.
2023-03-15 13:29:12 -05:00
Sebastian Huber
d0dd98cca0 sparc: Add header files to Doxygen group 2023-03-15 16:01:06 +01:00
Sebastian Huber
3a6efa2e7f score: Fix Doxygen group identifier 2023-03-15 16:01:06 +01:00
Sebastian Huber
09ddbde257 score: Add file to Doxygen group 2023-03-15 16:01:06 +01:00
Sebastian Huber
a0bb541d42 build: Use standard format 2023-03-15 16:01:06 +01:00
Sebastian Huber
03159bd837 build: Remove obsolete default-by-variant 2023-03-15 09:47:20 +01:00
Alex White
725e5ce27f bsps/microblaze: Add AXI GPIO driver 2023-03-14 09:29:16 -05:00
Sebastian Huber
e81701bc6c validation: Fix typo 2023-03-14 08:27:33 +01:00
Sebastian Huber
9bb2f59efe doxygen: Add groups for related test suites 2023-03-14 08:07:25 +01:00
Sebastian Huber
377eae4165 spsysinit01: Fix sem_open() call
The O_CREAT flag requires a mode and initial value as third and fourth
argument.

Close #4878.
2023-03-14 08:00:21 +01:00
Sebastian Huber
2859e422b3 Provide kernel space items only if needed
The kernel space parts of standard system header files were protected
against misuse by a preprocessor error directive.  This approach does
not work well with tools such as Doxygen.  Provide the kernel space
items only if the required defines are present.
2023-03-14 08:00:11 +01:00
Sebastian Huber
9bfe5f599d validation: Derive names from item UIDs
Use the item UID converted to CamelCase for Doxygen group names and
testsuite names.

Update #3716.
2023-03-13 14:00:59 +01:00
Karel Gardas
1a4e78b3a0 bsps/stm32h7: fix propagation of configured HSE freq. value into the code
Sponsored-By:	Precidata
2023-03-10 16:18:32 +01:00
Sebastian Huber
d5c386ff99 pps: Round to closest integer in pps_event()
The comment above bintime2timespec() says:

  When converting between timestamps on parallel timescales of differing
  resolutions it is historical and scientific practice to round down.

However, the delta_nsec value is a time difference and not a timestamp.  Also
the rounding errors accumulate in the frequency accumulator, see hardpps().
So, rounding to the closest integer is probably slightly better.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Sebastian Huber
d9f5345df6 pps: Simplify the nsec calculation in pps_event()
Let A be the current calculation of the frequency accumulator (pps_fcount)
update in pps_event()

  scale = (uint64_t)1 << 63;
  scale /= captc->tc_frequency;
  scale *= 2;
  bt.sec = 0;
  bt.frac = 0;
  bintime_addx(&bt, scale * tcount);
  bintime2timespec(&bt, &ts);
  hardpps(tsp, ts.tv_nsec + 1000000000 * ts.tv_sec);

and hardpps(..., delta_nsec):

  u_nsec = delta_nsec;
  if (u_nsec > (NANOSECOND >> 1))
          u_nsec -= NANOSECOND;
  else if (u_nsec < -(NANOSECOND >> 1))
          u_nsec += NANOSECOND;
  pps_fcount += u_nsec;

This change introduces a new calculation which is slightly simpler and more
straight forward.  Name it B.

Consider the following sample values with a tcount of 2000000100 and a
tc_frequency of 2000000000 (2GHz).

For A, the scale is 9223372036.  Then scale * tcount is 18446744994337203600
which is larger than UINT64_MAX (= 18446744073709551615).  The result is
920627651984 == 18446744994337203600 % UINT64_MAX.  Since all operands are
unsigned the result is well defined through modulo arithmetic.  The result of
bintime2timespec(&bt, &ts) is 49.  This is equal to the correct result
1000000049 % NANOSECOND.

In hardpps(), both conditional statements are not executed and pps_fcount is
incremented by 49.

For the new calculation B, we have 1000000000 * tcount is 2000000100000000000
which is less than UINT64_MAX. This yields after the division with tc_frequency
the correct result of 1000000050 for delta_nsec.

In hardpps(), the first conditional statement is executed and pps_fcount is
incremented by 50.

This shows that both methods yield roughly the same results.  However, method B
is easier to understand and requires fewer conditional statements.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Sebastian Huber
3cda5ad953 pps: Directly assign the timestamps in pps_event()
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Sebastian Huber
6730543457 pps: Move pcount assignment in pps_event()
Move the pseq increment.  This makes it possible to reuse registers earlier.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Sebastian Huber
2a30bbf852 pps: Simplify capture and event processing
Use local variables for the captured timehand and timecounter in pps_event().
This fixes a potential issue in the nsec preparation for hardpps().  Here the
timecounter was accessed through the captured timehand after the generation was
checked.

Make a snapshot of the relevent timehand values early in pps_event().  Check
the timehand generation only once during the capture and event processing.  Use
atomic_thread_fence_acq() similar to the other readers.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Sebastian Huber
069275f5fa pps: Load timecounter once in pps_capture()
This ensures that the timecounter and the tc_get_timecount handler belong
together.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/604
2023-03-07 07:30:44 +01:00
Mateusz Guzik
bb06cdab42 ntptime: ansify
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2023-03-07 07:30:44 +01:00
Sebastian Huber
aff6af106d Clarify hardpps() parameter name and comment
Since 32c203577a5e by phk in 1999 (Make even more of the PPSAPI
implementations generic), the "nsec" parameter of hardpps() is a time
difference and no longer a time point.  Change the name to "delta_nsec"
and adjust the comment.

Remove comment about a clock tick adjustment which is no longer in the code.

Pull Request: https://github.com/freebsd/freebsd-src/pull/640
Reviewed by: imp
2023-03-07 07:30:44 +01:00
Mitchell Horne
2bac3364d2 set_cputicker: use a bool
The third argument to this function indicates whether the supplied
ticker is fixed or variable, i.e. requiring calibration. Give this
argument a type and name that better conveys this purpose.

Reviewed by:	kib, markj
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D35459
2023-03-07 07:30:44 +01:00
firk
0c36cb6101 kern_tc.c/cputick2usec()
(which is used to calculate cputime from cpu ticks) has some imprecision and,
worse, huge timestep (about 20 minutes on 4GHz CPU) near 53.4 days of elapsed
time.

kern_time.c/cputick2timespec() (it is used for clock_gettime() for
querying process or thread consumed cpu time) Uses cputick2usec()
and then needlessly converting usec to nsec, obviously losing
precision even with fixed cputick2usec().

kern_time.c/kern_clock_getres() uses some weird (anyway wrong)
formula for getting cputick resolution.

PR:		262215
Reviewed by:	gnn
Differential Revision:	https://reviews.freebsd.org/D34558
2023-03-07 07:29:58 +01:00
Sebastian Huber
3612dc7d61 build: Print item UID in case of errors
This helps to identify issues in build items.
2023-03-06 16:37:06 +01:00