#include <linux/clk-provider.h>
#include <linux/container_of.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/platform_device.h>
#include <linux/reset-controller.h>
#include <linux/spinlock.h>
#include <dt-bindings/clock/bcm63268-clock.h>
#define BCM63268_TIMER_RESET_SLEEP_MIN_US …
#define BCM63268_TIMER_RESET_SLEEP_MAX_US …
struct bcm63268_tclkrst_hw { … };
struct bcm63268_tclk_table_entry { … };
static const struct bcm63268_tclk_table_entry bcm63268_timer_clocks[] = …;
static inline struct bcm63268_tclkrst_hw *
to_bcm63268_timer_reset(struct reset_controller_dev *rcdev)
{ … }
static int bcm63268_timer_reset_update(struct reset_controller_dev *rcdev,
unsigned long id, bool assert)
{ … }
static int bcm63268_timer_reset_assert(struct reset_controller_dev *rcdev,
unsigned long id)
{ … }
static int bcm63268_timer_reset_deassert(struct reset_controller_dev *rcdev,
unsigned long id)
{ … }
static int bcm63268_timer_reset_reset(struct reset_controller_dev *rcdev,
unsigned long id)
{ … }
static int bcm63268_timer_reset_status(struct reset_controller_dev *rcdev,
unsigned long id)
{ … }
static const struct reset_control_ops bcm63268_timer_reset_ops = …;
static int bcm63268_tclk_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id bcm63268_tclk_dt_ids[] = …;
static struct platform_driver bcm63268_tclk = …;
builtin_platform_driver(…) …;