Commit Graph

152 Commits

Author SHA1 Message Date
ecf66bf514 Correct doxygen for mutex_try_enter (#392) 2021-05-10 08:47:23 -05:00
114dc5a80d Fixup IRQ_PRIORITY #define values (#393)
Related to #245
2021-05-10 08:46:53 -05:00
8d4f4e148d remove spurious sys/select.h include (#377) 2021-05-05 11:51:18 -05:00
6d87da4c59 Rework lock_core / timers (#378)
- Add recursive_mutex
  - Make all locking primitives and sleep use common overridable wait/notify support to allow RTOS
    implementations to replace WFE/SEV with something more appropriate
  - Add busy_wait_ms
2021-05-05 11:46:25 -05:00
ec0dc7a88b add __always_inline to trivial super low level inline functions (#379) 2021-05-05 11:46:07 -05:00
53f1915a6b Add hardware_exception for setting exception handlers at runtime (#380) 2021-05-05 11:45:39 -05:00
7fc75d8c90 Definitions for IC_TX_BUFFER_DEPTH inconsistent (fixes #335) (#381) 2021-05-05 11:45:12 -05:00
8f3c3ff12a i2c: improve communication with i2c devices in i2c_write_blocking 2021-05-05 14:46:09 +01:00
18c39856bd Some cmake build improvements (#376)
* Change some cmake output to DEBUG level
Make SDK build more consistent with other libraries (use an INTERFACE marker library for inclusion tests)
Add PICO_SDK_PRE_LIST_FILES, PICO_SDK_POST_LIST_FILES build vars

* fix typo

* remove leftover debugging message
2021-05-04 08:40:11 -05:00
929ede7482 add small delay to stdio_get_until to prevent starvation of USB IRQ handler due to in use mutex. build was non deterministic due to missing link wrapping of getchar (#364) 2021-05-04 08:01:34 -05:00
b7da70a53b make all non hardware_ libraries foo add C preprocessor definition LIB_FOO=1, and remove bespoke definitions which were all undocumented anyway (#374) 2021-05-04 08:00:17 -05:00
6796faf0d5 add PICO_DIVIDER_DISABLE_INTERRUPTS flag which makes PICO_DIVIDER disable interrupts around division rather than using co-operative guards to protect nested use (i.e. within IRQ/exception). Use of this flag can simplify porting of RTOSes but with a different performance profile (#372) 2021-05-04 07:48:07 -05:00
c979ca591f disable core 0 SIO FIFO IRQ handler during core 1 launch in case someone has already installed one (#375) 2021-05-04 07:43:25 -05:00
4c83c10f01 make spi_init return baud rate set (#296) 2021-05-01 14:34:28 -05:00
5259693774 Small typos (#366) 2021-05-01 14:32:16 -05:00
6c4d25b887 correct adafruit flash size for itsybitsy and qt rp2040 (#348)
from 4 MB to 8 MB
2021-04-21 08:26:57 -05:00
b17fc76c8f Clarify multicore_fifo doxygen (#323)
Based on my observations in #284
2021-04-18 17:10:24 -05:00
b8dbbcf0d7 SPI Definitions for SparkFun boards (#344)
* SPI Definitions for SparkFun boards

Added the #defines for the default SPI pins on SparkFun boards

* SPI Definitions for SparkFun boards

Added the #defines for the default SPI pins on SparkFun boards

Co-authored-by: Kirk <blowme@cow.com>
2021-04-18 17:07:35 -05:00
93d3cf4d8e Updated existing Pimoroni board headers to match latest style, and added a new board (#343)
* Updated existing pimoroni board headers to newer style from pico.h

* Added new pimoroni board headers

* Fixed incorrect MB and missing _pin

* Removed SPI defaults from Picosystem
2021-04-18 16:13:47 -05:00
127543a425 Fixing arithmetic underflow in SPI I/O loops https://github.com/raspberrypi/pico-sdk/issues/337 (#338)
Co-authored-by: Michael Stoops <spam@michaelstoops.com>
2021-04-13 23:06:14 +01:00
9c3538e8b0 Remove MASTER_ON_HOLD bit from I2C status registers. Fix typos. (#326) 2021-04-12 11:15:50 +01:00
ec16d3ff28 Fix param-validation for PIO sideset encoding (#311) 2021-04-12 11:13:22 +01:00
5fdc663ff8 Fix implementation config listing in structs/i2c.h (#325) 2021-04-09 14:42:06 +01:00
962da33ea7 Clarify that cache is flushed, but that function is intended for low-level metadata access during startup (#322) 2021-04-09 08:05:29 -05:00
344b961ebf Fix implementation config listing in structs/i2c.h (#324) 2021-04-09 08:03:19 -05:00
814d2bd855 Make flash_do_cmd public (#269)
* Make flash_do_cmd public

* Fix typo in comment
2021-04-09 11:47:16 +01:00
f69f513a29 i2c: set high and low times to values that conform to the i2c specification (#314) 2021-04-09 11:00:33 +01:00
4fe995d0ec Update NULL GPIO function to 0x1f (#320)
Fixes #210
2021-04-08 15:25:01 -05:00
aabae62caa Merge branch 'master' into develop 2021-04-07 08:29:59 -05:00
92f948c123 Make kitchen_sink check param assertions, and include all headers - fix sign-compare warnings (#316) 2021-04-06 20:50:26 -05:00
0911393fe2 Changed the parameter check to avoid tripping -Werror on spin locks (#307)
This prevents a comparison between a signed and an unsigned number which
will create a warning tripping -Werror.

Also added a check for the alignment of the spin lock structure
2021-04-06 16:41:57 -05:00
d974a3b0e9 boot_stage2: cleanup and correctness fixes 2021-04-06 12:47:34 -05:00
2e777d47d3 i2c: set hold time of SDA during transmit to an appropriate value (#273)
* i2c: set hold time of SDA during transmit to 2 for TCS34725 color sensor

* i2c: fix issues in i2c_write_blocking_internal

* i2c: rename sda_hold_count to sda_tx_hold_count

* use assert rather than invalid_params_if for internal consistency checks

* i2c: use a more appropriate sda tx hold time at higher baudrates

* i2c: reduce 120/1e9 to the smallest possible integer numerator and denominator

* Don't use implicit 0 for field LSB

Co-authored-by: Luke Wren <wren6991@gmail.com>
2021-04-06 10:57:25 +01:00
162098678b move PLL reset code from clocks driver to pll driver (#110)
* move PLL reset code from clocks driver to pll driver

* Don't clear PLL PWR/FBDIV after reset as unnecessary. Call out in runtime.c why USB/syscfg aren't reset.

Co-authored-by: Peter Lawrence <12226419+majbthrd@users.noreply.github.com>
Co-authored-by: Luke Wren <wren6991@gmail.com>
2021-04-06 10:42:18 +01:00
fd16563f8f Merge pull request #299 from raspberrypi/back-merge-1.1.1
Back merge 1.1.1
2021-04-01 17:32:02 -05:00
7f2f186bcc build: allow board config header to specify bootstage 2 without using custom per board cmake (#293)
* build: allow compile time - and hence via board config header - choice of boot stage2 via a default compile_time_choice.S boot stage 2 which conditionally includes others
adafruit_rp2040_feather: fix flash size/clkdiv

* fixup GENERIC_03H #define names
2021-04-01 16:42:53 -05:00
260128a725 fixup elf2uf2 to allow blocked_ram (flash) binaries (#294) 2021-04-01 15:03:04 -05:00
3c0309c10e Add pico_get_unique_board_id_string API (#281)
* Add pico_get_unique_board_id_string API

Add a new API to pico_unique which will turn the unique ID into a
canonical text string.

Use this API to update the USB device serial number in stdio_usb.

Supercedes #280

* Clean up -Wconversion=error issues

* Address review comments, fix api typing

Use cleaner binary-to-hex conversion.  Update the length parameter to
use uint per the SDK standard .
2021-03-30 09:04:58 -05:00
859d1d27b8 Don't advertise REMOTE_WAKEUP for USB stdio as it is is not currently implemented. Longer term need to implement REMOTE_WAKUP properly in TinyUSB. Similar fix needed in MicroPython to fix MicroPython issue #6866. The symptom is that USB serial will stop working if there is a delay of > 2 seconds ish between messages. We have seen this issue on Linux laptops with USB autosuspend enabled. (#289) 2021-03-30 09:03:28 -05:00
85ac3d7cf8 I2C doxygen typos (#287)
* I2C doxygen typos

* another typo
2021-03-29 11:37:50 -05:00
c1f164b9fd corrected clk_gpout3 to gpio pin 25 as per the rp2040 datasheet (#250) 2021-03-24 09:35:02 -05:00
0c941d9767 Tweaks to PIO clkdiv-setting code (#254)
- refactor to reduce duplication
 - add extra param-validation
2021-03-24 09:32:38 -05:00
a47d6d6e14 Allow heap end to be equal to stack limit (#266) 2021-03-24 09:26:54 -05:00
1d4588a565 Board-header typos (#270) 2021-03-24 09:15:36 -05:00
98574564b8 Add gpio_get_out_level() accessor, and correct SIO GPIO_OUT struct ty… (#247)
* Add gpio_get_out_level() accessor, and correct SIO GPIO_OUT struct type from WO to RW

* Clean up ambiguous-looking parentheses
2021-03-22 12:54:33 -05:00
e9a521a9b1 rtc_get_datetime: read the rtc registers just once each
In order for the returned value to accurately reflect a single moment in time,
ensure the registers are read just once and in the datasheet order.
Before this change, the RTC registers would each be read multiple times,
leading (infrequently) to the returned fields not all reflecting the same
moment in time.

The rp2040 datasheet has what I believe is an incorrect example (embedding
the source of this function); will the datasheet be updated if this function is
fixed?

This problem is only a speculative one; I did not actually observe it in the
wild.
2021-03-22 09:11:51 -05:00
f6d32f87a1 Fix typo in sparkfun_micromod.h (#268) 2021-03-18 14:41:40 -05:00
fe3408b286 Small fixes (#260)
* pico_stdio_usb: be more explicit about includes, fix warning (#257)

* pico_base: NDEBUG backwards for absolute_time_t (#255)

* pico_util: missing extern C in queue.h (#249)

* build: remove -march which was masking -mcpu, now SVC available (#253)
2021-03-17 18:05:48 +00:00
cdf1a956eb Typo (#251) 2021-03-15 14:29:59 -05:00
336aae518e Fix ROSC typo (#259)
* Fix ROSC typo

* Additional ROSC typos
2021-03-15 13:57:37 -05:00