drivers: can: sam: Update to use clock control

This update Atmel SAM can driver to use clock control driver.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
This commit is contained in:
Gerson Fernando Budke 2023-03-07 19:47:48 +01:00 committed by Marti Bolivar
commit 41ab680a4f
3 changed files with 9 additions and 8 deletions

View file

@ -7,6 +7,7 @@
#include <zephyr/drivers/can.h>
#include <zephyr/drivers/pinctrl.h>
#include <zephyr/drivers/clock_control/atmel_sam_pmc.h>
#include <soc.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
@ -20,8 +21,8 @@ LOG_MODULE_REGISTER(can_sam, CONFIG_CAN_LOG_LEVEL);
struct can_sam_config {
void (*config_irq)(void);
const struct atmel_sam_pmc_config clock_cfg;
const struct pinctrl_dev_config *pcfg;
uint8_t pmc_id;
int divider;
};
@ -44,7 +45,9 @@ static void can_sam_clock_enable(const struct can_sam_config *sam_cfg)
REG_PMC_PCK5 = PMC_PCK_CSS_UPLL_CLK | PMC_PCK_PRES(sam_cfg->divider - 1);
PMC->PMC_SCER |= PMC_SCER_PCK5;
soc_pmc_peripheral_enable(sam_cfg->pmc_id);
/* Enable CAN clock in PMC */
(void)clock_control_on(SAM_DT_PMC_CONTROLLER,
(clock_control_subsys_t *)&sam_cfg->clock_cfg);
}
static int can_sam_init(const struct device *dev)
@ -136,7 +139,7 @@ static void config_can_##inst##_irq(void)
#define CAN_SAM_CFG_INST(inst) \
static const struct can_sam_config can_sam_cfg_##inst = { \
.pmc_id = DT_INST_PROP(inst, peripheral_id), \
.clock_cfg = SAM_DT_INST_CLOCK_PMC_CFG(inst), \
.divider = DT_INST_PROP(inst, divider), \
.pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(inst), \
.config_irq = config_can_##inst##_irq, \

View file

@ -424,7 +424,7 @@
reg-names = "m_can";
interrupts = <35 0>, <36 0>;
interrupt-names = "LINE_0", "LINE_1";
peripheral-id = <35>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 35>;
divider = <6>;
sjw = <1>;
sample-point = <875>;
@ -439,7 +439,7 @@
reg-names = "m_can";
interrupts = <37 0>, <38 0>;
interrupt-names = "LINE_0", "LINE_1";
peripheral-id = <37>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 37>;
divider = <6>;
sjw = <1>;
sample-point = <875>;

View file

@ -13,10 +13,8 @@ properties:
interrupts:
required: true
peripheral-id:
type: int
clocks:
required: true
description: peripheral ID
divider:
type: int