Commit Graph

219 Commits

Author SHA1 Message Date
BIGTREETECH 1636a9759b
stm32: stm32g0/h7 usb_dfu_bootloader support (#5596)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2022-06-30 13:58:00 -04:00
Kevin O'Connor 790ff4d8d7 usb_canbus: Initial support for USB to CAN bridge mode
Support a USB interface that shows up as a canbus adapter to linux.
Route both local and real canbus packets over that interface.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-27 10:50:23 -04:00
Kevin O'Connor c8cc98ce5d canserial: Rename canbus.c to canserial.c
Rename the canbus.c code to canserial.c and introduce new wrapper
functions in canbus.c that connect the low-level canbus hardware code
to the high-level canserial.c code.

This is in preparation for adding "usb to canbus bridge mode".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-27 10:50:23 -04:00
Kevin O'Connor f5d5f53914 stm32: Add support for disabling the canbus filter
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-27 10:50:23 -04:00
adelyser 84b2bfe313
stm32: Add MCU temp for Stm32h7 (#5606)
Added mcu temperature to the stm32h7 processor.

Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
2022-06-27 10:16:09 -04:00
Kevin O'Connor cf9d96434c stm32: Add Kconfig option for stm32f103x6 chip (with only 10KiB ram)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-20 12:37:23 -04:00
Kamil Trzciński 0256967def
stm32: support stm32f401 adc_temperature sensor (#5572)
> The temperature sensor is internally connected to the ADC_IN18

> The TSVREFE bit must be set to enable the conversion of both internal channels: the ADC1_IN16 or ADC1_IN18 (temperature sensor) and the ADC1_IN17 (VREFINT).

Ref.: https://www.st.com/resource/en/reference_manual/dm00096844-stm32f401xb-c-and-stm32f401xd-e-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf

Signed-off-by: Kamil Trzciński <ayufan@ayufan.eu>
2022-06-20 12:13:02 -04:00
Kevin O'Connor 3f3713ee97 Kconfig: Move SERIAL, USBSERIAL, and CANSERIAL definitions to src/Kconfig
There is no need to define these options in every board Kconfig file.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 14:59:03 -04:00
Kevin O'Connor fc7838855f canbus: Move canbus uuid calculation to canbus.c
Move the uuid hash calculation to canbus.c and call canbus_set_uuid()
from src/stm32/chipid.c .  This simplifies the low-level canbus
hardware code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 11:03:48 -04:00
Kevin O'Connor 3f7d05dd18 stm32: Support passing through RTR and EFF canbus frames
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 11:03:48 -04:00
Kevin O'Connor 913c6a913d stm32: Support PA11/PA12 and PB8/PB9 on fdcan
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 11:03:48 -04:00
Kevin O'Connor ce186c6af6 stm32: Simplify fdcan tx irq handling
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 11:00:15 -04:00
Kevin O'Connor 84d798f516 canbus: Use single method for reading canbus messages
Previously the code had canbus_read() which was called from task
context (for admin messages), and canbus_process_data() which was
called from irq context (used for data messages).  Change that to a
single canbus_process_data() function that is called from irq context
(used for all messages).  This simplifies the low-level hardware
specific canbus code and should make it easier to support other
hardware implementations.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 11:00:15 -04:00
Kevin O'Connor 7ffd01de4c stm32: Support 4KiB bootloader on stm32f1 and stm32f0
The CanBoot bootloader can often fit in 4KiB and that may be useful
for some devices with small flash sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-10 11:48:13 -04:00
BIGTREETECH ada571ecb8
stm32: Enable Automatic retransmission feature to avoid data loss caused by bus conflict for STM32G0B1 fdcan (#5550)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2022-06-06 10:59:18 -04:00
Kevin O'Connor db5a4351a5 Kconfig: Move CANBUS_FREQUENCY definition from src/stm32/Kconfig to src/Kconfig
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-04 11:56:59 -04:00
Kevin O'Connor c1f4bdebf2 armcm_reset: Add a armcm_reset.h header file for try_request_canboot()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-04 11:52:39 -04:00
Eric Callahan 39535b15ba stm32: use TME bits to find the canbus tx mailbox
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2022-06-03 14:51:01 -04:00
Eric Callahan 3c7eea7336 stm32: call "try_request_canboot" for bootloader requests
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2022-06-03 14:51:01 -04:00
Eric Callahan 129091d811 canbus: use "try_request_canboot" method
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2022-06-03 14:51:01 -04:00
Kevin O'Connor 63affd7006 stm32: Rework kconfig to use CONFIG_CANSERIAL for both can.c and fdcan.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-01 10:59:10 -04:00
BIGTREETECH 1ff7261203
stm32: stm32g0b1 fdcan support (#5488)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2022-06-01 10:43:45 -04:00
Kevin O'Connor 19a478de37 stm32: Don't allow USB on internal clock for stm32f103/stm32f070
Reported by @kaidegit.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-23 15:35:05 -04:00
Kevin O'Connor a6b3d2f18f stm32: Remove unused header from can.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-10 15:03:55 -04:00
Eric Callahan 60625f4422 stm32: add 8 KiB bootloader option for F0x2 devices
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2022-05-10 11:48:06 -04:00
Kevin O'Connor c263f76f9f stm32: Fix typo in i2c.c
Reported by @kaidegit.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-07 10:13:34 -04:00
JamesH1978 542486fba7
stm32: Add 64kib bootloader offset option to STM32F401 (#5457)
This is needed for the Creality Ender 3 S1 with the STM32F401 chips to enable a 64kib bootloader offset

Signed-off-by: James Hartley <james@hartleyns.com>
2022-04-25 12:07:48 -04:00
alstoepp 44567879f6
stm32: Add STM32F072 16KiB bootloader option (#5404)
Signed-off-by: Alexander Stöpperger <a.stoepperger@gmx-topmail.de>
2022-04-13 11:22:04 -04:00
Kevin O'Connor 38e82e8d8f stm32: Add support for additional i2c buses
Reported by @StoneColdCrazy.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-11 10:58:34 -04:00
Kevin O'Connor 7731c30422 stm32: Allow 32KiB bootloader to be specified for all STM32F4 builds
Reported by @GerogeFu.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-14 12:26:41 -04:00
Kevin O'Connor e3beafbdb4 stm32: Clarify CCIPR2 setting in stm32g0.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-11 14:12:11 -05:00
Kevin O'Connor 4ce2d379bb stm32: Simplify CCIPR2 register assignment on stm32g0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-09 13:28:00 -05:00
BIGTREETECH d75154d695
stm32: USB clock source from PLLQCLK on stm32g0 (#5341)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2022-03-09 13:11:04 -05:00
Kevin O'Connor e3cbe7ea36 stm32: Clear SPE flag on a change to SPI CR1 register
The stm32 specs indicate that the SPE bit must be cleared before
changing the CPHA or CPOL bits.

Reported by @cbc02009 and @bigtreetech.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-02-10 18:12:01 -05:00
Kevin O'Connor 99d55185a2 stm32: Wait for transmission to complete before returning from spi_transfer()
It's possible for the SCLK pin to still be updating even after the
last byte of data has been read from the receive pin.  (In particular
in spi mode 0 and 1.)  Exiting early from spi_transfer() in this case
could result in the CS pin being raised before the final updates to
SCLK pin.

Add an additional wait at the end of spi_transfer() to avoid this
issue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-02-10 17:27:55 -05:00
adelyser 9174c0241e
stm32: Fix ADC on stm32h7 (#5239)
Don't reset the ADC peripheral if the clock is already enabled.
Fixes #5236

Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
2022-02-06 18:29:53 -05:00
Sergey1560 fb6d6d381c
stm32: Add remap CAN to PD0/PD1 for stm32f103 (#5173)
Signed-off-by: Sergey Terentiev <sergey@terentiev.me>
2022-01-26 18:06:55 -05:00
Kevin O'Connor 4c8d24ae03 stm32: Update Kconfig as CANBUS isn't available on stm32f401
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-01-07 22:17:26 -05:00
Kevin O'Connor 8b6753d68f stm32: Unify enable_pclock() code
Unify the handling of the enable_pclock() and is_enabled_pclock() code
across all stm32 chips.  All chips will now perform a peripheral reset
on enable_pclock() (this is a change for stm32f0 and stm32h7).  The
enable_pclock() code will now also disable irqs during the enable.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-30 12:18:05 -05:00
adelyser 9bdd61758e
stm32: Fix the GPIO register for stm32h7 (#5077)
Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
2021-12-29 18:01:28 -05:00
Kevin O'Connor 247cd753e2 stm32: Fix ADC on stm32f042
It seems the stm32f042 chip needs a small delay during ADC enable.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-24 19:27:04 -05:00
Kevin O'Connor c89a01c83b stm32: Enable SPI support on stm32g0
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor 1c24317380 stm32: Enable ADC support on stm32g0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor 88325b6c93 stm32: Rework register access on stm32f0_adc.c
Avoid read-modify-write operations where possible.  The register
values are in a known state so prefer absolute writes.

Improve handling of race conditions with hardware updates.

Remove the adc reference from "struct gpio_adc" as it is a constant.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor 20ac48f680 stm32: Minor whitespace changes to stm32f0_adc.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor b710174107 stm32: Enable I2C on stm32g0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor 9549a3b4fb stm32: Add support for USB on stm32g0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor 8d7a6e4ca4 stm32: Rework USB transfer memory layout in usbfs.c
Use a fixed layout for the USB transfer memory and remove the ep_mem
struct definition.

This is in preparation for stm32g0 support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:26 -05:00
Kevin O'Connor a4a02e86af stm32: Fix buffer size calculation in usbfs.c
When the buffers are over 32 bytes, a block count of 1 starts at 0.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:25 -05:00
Kevin O'Connor 7d2c966241 stm32: Simplify irq declaration in usbfs.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2021-12-23 22:15:25 -05:00