-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SIM3U: board + UART #64209
SIM3U: board + UART #64209
Conversation
The following west manifest projects have been modified in this Pull Request:
Note: This message is automatically posted and updated by the Manifest GitHub Action. |
drivers/gpio/gpio_si32.c
Outdated
#define GPIO_DEVICE_INIT_SI32(__suffix) \ | ||
GPIO_DEVICE_INIT(DT_NODELABEL(gpio##__suffix), __suffix, \ | ||
DT_REG_ADDR(DT_NODELABEL(gpio##__suffix))) | ||
|
||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(gpio0), okay) | ||
GPIO_DEVICE_INIT_SI32(0); | ||
#endif | ||
|
||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(gpio1), okay) | ||
GPIO_DEVICE_INIT_SI32(1); | ||
#endif | ||
|
||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(gpio2), okay) | ||
GPIO_DEVICE_INIT_SI32(2); | ||
#endif | ||
|
||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(gpio3), okay) | ||
GPIO_DEVICE_INIT_SI32(3); | ||
#endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use DT_INST_FOREACH_STATUS_OKAY
instead of hardcoding instance numbers here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you're right. I copied that from another driver which didn't use that either at the time. Right now, the only driver left that doesn't use that macro seems to be stm32.
static void vmon_init(void) | ||
{ | ||
/* VMON must be enabled for flash write/erase support */ | ||
|
||
NVIC_ClearPendingIRQ(VDDLOW_IRQn); | ||
|
||
IRQ_CONNECT(VDDLOW_IRQn, 0, vddlow_irq_handler, NULL, 0); | ||
irq_enable(VDDLOW_IRQn); | ||
|
||
SI32_VMON_A_enable_vdd_supply_monitor(SI32_VMON_0); | ||
SI32_VMON_A_enable_vdd_low_interrupt(SI32_VMON_0); | ||
SI32_VMON_A_select_vdd_standard_threshold(SI32_VMON_0); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Is flash support required for UART operation? As per the PR description
- IMO we should convert this to a separate sensor driver
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Your post ends mid-sentence and these lines don't have anything related to flash, but: The flash driver itself is not needed for UART, but:
- I couldn't find a way to compile without it due to zephyr using flash nodes to figure out how to link the binary
- Changing the AHB clock speed requires changing a FLASHCTRL register: https://github.com/zephyrproject-rtos/zephyr/pull/64209/files/861b3c678668d5157c6ba8384a156c0e036fd678#diff-2e890857b384cfc0e5d42940be13fd38adc48f1acc2d3c260f44d3f1db14ffafR86
- Definitely, It's just that we didn't have a use for it yet and this is only needed to enable the watchdog. I'll have to look into how well this hardware fits into the sensor subsystem and how much work it'd be to integrate it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- don't have anything related to flash
What about /* VMON must be enabled for flash write/erase support */
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh sry, I forgot about that. I put this here because it's required to read/write flash and I assumed that everyone would want this (which may not be true ofc).
I don't think the sensor subsystem is a good fit for VMON because this hardware can only produce notifications in form of interrupts, you can't read the voltage level(it's not an ADC). It also seems to be wired up to other peripherals internally. My assumption is that the flash silicon wants to prevent write write-operation failures by detecting VDD issues.
/* Apply pinctrl gpio settings */ | ||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_0, PORTBANK_0_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_0, PORTBANK_0_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_0, PORTBANK_0_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_0, PORTBANK_0_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_0, PORTBANK_0_PINS_ANALOG); | ||
|
||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_1, PORTBANK_1_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_1, PORTBANK_1_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_1, PORTBANK_1_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_1, PORTBANK_1_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_1, PORTBANK_1_PINS_ANALOG); | ||
|
||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_2, PORTBANK_2_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_2, PORTBANK_2_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_2, PORTBANK_2_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_2, PORTBANK_2_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_2, PORTBANK_2_PINS_ANALOG); | ||
|
||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_3, PORTBANK_3_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_3, PORTBANK_3_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_3, PORTBANK_3_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_3, PORTBANK_3_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_3, PORTBANK_3_PINS_ANALOG); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this be handled by the pinctrl driver then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't have a pinctrl driver. That's the reason why this exists in first place. The GPIO driver shouldn't be used here either since it must be set even if CONFIG_GPIO
is disabled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this code put here and not in a pinctrl driver? can you please explain why can't this be executed by each driver?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A device driver usually informs the pinctrl subsystem about the pinconfig it wants by calling pinctrl_apply_state
. After that function returns it expect things to be muxed already and may start using the device.
So what we need to do on sim3u is to know which pinmuxings are needed before even trying to probe every driver.
Of course, we could just cache the request in "pinctrl_apply_state" but not actually apply any changes, then register a SYS_INIT at a very late level like APPLICATION
where we apply it. But IMO that would violate the pinctrl API and may not work with certain drivers.
IMO the pinctrl API is just fundamentally incompatible with the way sim3u works and I was simply trying to find a way to at least be able to use the expressiveness provided by the devicetree nodes.
/* Enable misc clocks. | ||
* We may or may nor need all of that but it includes some basics like | ||
* LOCK0, WDTIMER0 and DMA. Doing it here prevents the actual drivers | ||
* needing to know whoelse needs one of these clocks. | ||
*/ | ||
SI32_CLKCTRL_A_enable_apb_to_modules_1( | ||
SI32_CLKCTRL_0, SI32_CLKCTRL_A_APBCLKG1_MISC0 | SI32_CLKCTRL_A_APBCLKG1_MISC1); | ||
SI32_CLKCTRL_A_enable_ahb_to_dma_controller(SI32_CLKCTRL_0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we read which clocks we need from the devicetree?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How exactly would that look like? The proper way would probably be to have e driver+device for every clock and then pass it via devicetree and create a custom driver interface to turn the clock handle into a register for apb.
To me that seems like a lot of additional code and overhead for something that we currently don't support changing anyway.
|
||
#ifndef _SOC__H_ | ||
#define _SOC__H_ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know that in some cases on some architectures Zephyr requires an soc.h
header, even if it's empty. Just wanted to make sure that it is the case here as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
zephyr/modules/cmsis/cmsis_core_m.h
seems to need it.
west.yml
Outdated
@@ -222,7 +222,7 @@ manifest: | |||
groups: | |||
- hal | |||
- name: hal_silabs | |||
revision: d191d981c4eb20c0c7445a4061fcdbcfa686113a | |||
revision: 98b458d99b74083fce4c715fedcee45d388eb8b8 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should point to the PR head directly, i.e. revision: pull/x/head
where x
is your PR number in the HAL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good idea, thx
|
||
/* Since a hardware reset affects the debug hardware as well, this | ||
* makes it easier to recover from a broken firmware */ | ||
busy_delay(3000000); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use k_busy_wait
here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
k_busy_wait
uses a hardware counter and I didn't think it was a good idea to rely on it's availability at this early stage. If you understand those better and can confirm that it's not an issue I can change it though.
|
||
key = irq_lock(); | ||
|
||
/* The watchdog may be enabled already so we have to disable it */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Enabled by whom - is there some kind of bootrom on this SoC that enables some of the peripherals? What's the default reset state for watchdog on SIM3U?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately I don't know that. It's just something that I have observed to be the case on certain devices.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot! I have not (yet) compiled/tested this code, only found some typos while skimming the PR.
@@ -0,0 +1,71 @@ | |||
.. _boardname_linkname: | |||
|
|||
GARDENA SIM3U radio module |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GARDENA SIM3U radio module | |
GARDENA SiM3U radio module |
|
||
.. figure:: gardena_rm_sim3u.jpg | ||
:align: center | ||
:alt: GARDENA SIM3U radio module |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:alt: GARDENA SIM3U radio module | |
:alt: GARDENA SiM3U radio module |
Hardware | ||
******** | ||
|
||
- SIM3U167B-GM SoC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to the data sheet:
- SIM3U167B-GM SoC | |
- SiM3U167-B-GM SoC |
******** | ||
|
||
- SIM3U167B-GM SoC | ||
- SPI si4467 transceiver |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- SPI si4467 transceiver | |
- SPI Silicon Labs Si4467 transceiver |
======== | ||
|
||
The easiest way is to do this via SSH from the Linux SoM that's connected to | ||
the SIM3U SoM. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the SIM3U SoM. | |
the SiM3U SoM. |
#include "gardena_rm_sim3u-pinctrl.dtsi" | ||
|
||
/ { | ||
model = "GARDENA sim3u radio module"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
model = "GARDENA sim3u radio module"; | |
model = "GARDENA Sim3U radio module"; |
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
identifier: gardena_rm_sim3u | ||
name: GARDENA sim3u radio module |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
name: GARDENA sim3u radio module | |
name: GARDENA SiM3U radio module |
@@ -0,0 +1,23 @@ | |||
# SIM3U series configuration options |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# SIM3U series configuration options | |
# SiM3U series configuration options |
default "sim3u" | ||
|
||
config SOC_PART_NUMBER | ||
default "SIM3U167-A-GM" if SOC_PART_NUMBER_SIM3U167_A_GM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not understand why exactly this is needed, but there seems to be no A variant:
default "SIM3U167-A-GM" if SOC_PART_NUMBER_SIM3U167_A_GM | |
default "SiM3U167-B-GM" if SOC_PART_NUMBER_SIM3U167_B_GM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems to be a way for boards to select the variant in case that information is needed at compile-time. But you're right so I switched it to the B variant which is also selected by our board.
|
||
"""Generate crossbar register values from devicetree pinctrl nodes. | ||
|
||
The sim3u soc does support pinmuxing, but with many limimitations. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The sim3u soc does support pinmuxing, but with many limimitations. | |
The SiM3U soc does support pinmuxing, but with many limimitations. |
class Signal(enum.Enum): | ||
USART0_TX = 0 | ||
USART0_RX = 1 | ||
USART0_RTS = 2 | ||
USART0_CTS = 3 | ||
USART0_UCLK = 4 | ||
|
||
USART1_TX = 9 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you please explain why we need pinctrl related Python scripts in soc/
? If this is required by the HAL, -1 to have this in tree.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is described in detail in the documentation of said python module: https://github.com/zephyrproject-rtos/zephyr/pull/64209/files#diff-0a14224d1df8e0d15ef02b23405ccca2fa3ee71eb65671d7c03b289357a112beR7
This is a workaround due to hardware limitations. The pinctrl hardware functions under the assumption that you set all the configs once at boot and never touch them again. This doesn't fit zephyrs pinctrl subsystem which tries to configure pins for every peripheral on demand, one by one. The python script allows using devicetree pinctrl nodes to simplify pin configuration even though we do not support the pinctrl subsystem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you please provide a datasheet or something to look at?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.silabs.com/documents/public/data-sheets/SiM3U1xx-SiM3C1xx-RM.pdf
8. Port I/O Configuration
, Specifically the crossbar descriptions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess it's
When configuring the crossbar, all settings should be made to the crossbar and Port Bank registers before
enabling the crossbar. This ensures that peripherals will not shift around while each one is being enabled and Port
I/O pins will remain stable. The settings in PBOUTMD, PBMDSEL, or PBSKIPEN will not take effect until the
crossbars are enabled.
right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
exactly.
/* Apply pinctrl gpio settings */ | ||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_0, PORTBANK_0_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_0, PORTBANK_0_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_0, PORTBANK_0_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_0, PORTBANK_0_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_0, PORTBANK_0_PINS_ANALOG); | ||
|
||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_1, PORTBANK_1_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_1, PORTBANK_1_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_1, PORTBANK_1_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_1, PORTBANK_1_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_1, PORTBANK_1_PINS_ANALOG); | ||
|
||
SI32_PBSTD_A_write_pins_high(SI32_PBSTD_2, PORTBANK_2_PINS_HIGH); | ||
SI32_PBSTD_A_write_pins_low(SI32_PBSTD_2, PORTBANK_2_PINS_LOW); | ||
SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_2, PORTBANK_2_PINS_DIGITAL_INPUT); | ||
SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_2, PORTBANK_2_PINS_PUSH_PULL_OUTPUT); | ||
SI32_PBSTD_A_set_pins_analog(SI32_PBSTD_2, PORTBANK_2_PINS_ANALOG); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-1 on custom pin control mechanisms.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you expand on what you mean by "custom"? Are you referring to #64209 (comment) ? Any comments on my reply to that?
This bumps the hal_silabs in order to add initial support for sim3u SoCs. WIP, because the revision wasn't merged, yet. Signed-off-by: Michael Zimmermann <[email protected]>
Includes the SoC, pinctrl, flash and devicetree. I had to include the flash driver that early because I couldn't make zephyr compile without flash driver nodes in the device tree. Signed-off-by: Michael Zimmermann <[email protected]>
this serves two main purposes: - change the CPU clock via devicetree nodes - provide the APB frequency to device drivers via the clock driver interface Theoretically this could also support choosing between the available clock sources, but right now we only support LPOSC0 going into PLL0, going into AHB. Turning the PLL back off is also not supported since the only current usecase is to set the PLL frequency, turn it on, and switch the AHB over to it. Signed-off-by: Michael Zimmermann <[email protected]>
This is just the driver for banks 0,1,2,3. Bank 4 will come via a separate commit since it needs a different driver. Signed-off-by: Michael Zimmermann <[email protected]>
This supports polling and interrupt APIs, but not the async API. Signed-off-by: Michael Zimmermann <[email protected]>
Signed-off-by: Michael Zimmermann <[email protected]>
I rebased, fixed typos and made the gpio driver use foreach. Most comments are still waiting for feedback. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
after explanation, pinctrl changes look reasonable, thanks for the details. added a few more comments
SI32_VMON_A_select_vdd_standard_threshold(SI32_VMON_0); | ||
} | ||
|
||
__no_optimization static void busy_delay(uint32_t cycles) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please use k_busy_wait
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
static void gpio_init(void) | ||
{ | ||
/* Enable clocks that we need in any case */ | ||
SI32_CLKCTRL_A_enable_apb_to_modules_0( | ||
SI32_CLKCTRL_0, SI32_CLKCTRL_A_APBCLKG0_PB0 | SI32_CLKCTRL_A_APBCLKG0_FLASHCTRL0); | ||
|
||
/* Enable misc clocks. | ||
* We may or may nor need all of that but it includes some basics like | ||
* LOCK0, WDTIMER0 and DMA. Doing it here prevents the actual drivers | ||
* needing to know whoelse needs one of these clocks. | ||
*/ | ||
SI32_CLKCTRL_A_enable_apb_to_modules_1( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please split all the pinctrl functionality into its own commit, and explain why this is done this way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we expect explanations to be available in multiple places? While I obviously find good commit messages important, I prefer to put documentation that is important for the code in general rather than the specific change into the code. That's why I wrote a very lengthy explanation in the python script documentation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the Python script is ok, this function should probably have a couple of lines that it works thanks to such script. an individual commit message adding the crossbar functionality will also help (e.g. commit message summarizing details and referencing to the datasheet relevant sections)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you know of any ways to split up Initial sim3u1xx support
? That commit contains everything that's needed for just UART. I wasn't even able to separate the flash driver - let alone the crossbar config.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just add bits that build but do not work as a whole, this has been done many times in Zephyr, e.g. first add bindings, then driver using them
|
||
zephyr_sources(soc.c) | ||
|
||
set(CROSSBAR_CONFIG_H ${CMAKE_BINARY_DIR}/zephyr/include/generated/silabs_crossbar_config.h) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is being refactored now to include zephyr/
prefix #63973
|
||
slot0_partition: partition@0 { | ||
label = "image-0"; | ||
reg = <0x00000000 DT_SIZE_K(1664)>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1664 kilobytes?
reg = <0x00000000 DT_SIZE_K(1664)>; | |
reg = <0x00000000 DT_SIZE_K(192)>; |
reg = <0x00000000 DT_SIZE_K(1664)>; | ||
}; | ||
|
||
storage_partition: partition@250000 { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reflecting the actual offset would be better I guess?
storage_partition: partition@250000 { | |
storage_partition: partition@30000 { |
This pull request has been marked as stale because it has been open (more than) 60 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this pull request will automatically be closed in 14 days. Note, that you can always re-open a closed pull request at any time. |
Please do not close. @M1cha let me know if you'd rather have me taking this over, would be happy do to so. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs to be migrated to hwmv2
This pull request has been marked as stale because it has been open (more than) 60 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this pull request will automatically be closed in 14 days. Note, that you can always re-open a closed pull request at any time. |
This is still being worked in (https://github.com/husqvarnagroup/zephyr/tree/gardena/rs/sim3u). Please do not close. |
This is cherry-picked from the PR already opened by Michael Zimmermann: zephyrproject-rtos#57871 Eventually, this commit should be updated with the new PR posted here: zephyrproject-rtos#64209 For this reason, do not merge substantial improvements over the original PR into this commit - it would (likely) be forgotten when switching to the new PR. Note: As requested by the reviewers upstream, the new PR is reduced in scope and therefore, the extracted parts need to be brought back manually. (cherry picked from commit a2ce87510b7ee119f3df179192ffb5ff083b6100) (squashed ab4505ff0d234c457aaa0d3ddc27833157d0d0ad)
This pull request has been marked as stale because it has been open (more than) 60 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this pull request will automatically be closed in 14 days. Note, that you can always re-open a closed pull request at any time. |
This is a reduced version of #57871.
I removed everything that is not needed for UART. I've also added documentation and rebased to the latest main branch. I didn't address much(if anything) from the original PR to make differences more visible.