1f26c8a8eSSimon Glass /* 2f26c8a8eSSimon Glass * Copyright (c) 2015 Google, Inc 3f26c8a8eSSimon Glass * Written by Simon Glass <sjg@chromium.org> 4f26c8a8eSSimon Glass * 5f26c8a8eSSimon Glass * SPDX-License-Identifier: GPL-2.0+ 6f26c8a8eSSimon Glass */ 7f26c8a8eSSimon Glass 808d0d6f3SMichal Simek #ifndef _CLK_H_ 908d0d6f3SMichal Simek #define _CLK_H_ 1008d0d6f3SMichal Simek 11*ad1cf785SMasahiro Yamada #include <linux/types.h> 12*ad1cf785SMasahiro Yamada 13*ad1cf785SMasahiro Yamada struct udevice; 14*ad1cf785SMasahiro Yamada 1508d0d6f3SMichal Simek int soc_clk_dump(void); 1608d0d6f3SMichal Simek 17f26c8a8eSSimon Glass struct clk_ops { 18f26c8a8eSSimon Glass /** 19f26c8a8eSSimon Glass * get_rate() - Get current clock rate 20f26c8a8eSSimon Glass * 21f26c8a8eSSimon Glass * @dev: Device to check (UCLASS_CLK) 22f26c8a8eSSimon Glass * @return clock rate in Hz, or -ve error code 23f26c8a8eSSimon Glass */ 24f26c8a8eSSimon Glass ulong (*get_rate)(struct udevice *dev); 25f26c8a8eSSimon Glass 26f26c8a8eSSimon Glass /** 27f26c8a8eSSimon Glass * set_rate() - Set current clock rate 28f26c8a8eSSimon Glass * 29f26c8a8eSSimon Glass * @dev: Device to adjust 30f26c8a8eSSimon Glass * @rate: New clock rate in Hz 31f26c8a8eSSimon Glass * @return new rate, or -ve error code 32f26c8a8eSSimon Glass */ 33f26c8a8eSSimon Glass ulong (*set_rate)(struct udevice *dev, ulong rate); 34f26c8a8eSSimon Glass 35f26c8a8eSSimon Glass /** 368bdf9cfdSMasahiro Yamada * get_periph_rate() - Get clock rate for a peripheral 37f26c8a8eSSimon Glass * 388bdf9cfdSMasahiro Yamada * @dev: Device to check (UCLASS_CLK) 398bdf9cfdSMasahiro Yamada * @periph: Peripheral ID to check 408bdf9cfdSMasahiro Yamada * @return clock rate in Hz, or -ve error code 41f26c8a8eSSimon Glass */ 42f26c8a8eSSimon Glass ulong (*get_periph_rate)(struct udevice *dev, int periph); 43f26c8a8eSSimon Glass 44f26c8a8eSSimon Glass /** 458bdf9cfdSMasahiro Yamada * set_periph_rate() - Set current clock rate for a peripheral 46f26c8a8eSSimon Glass * 47f26c8a8eSSimon Glass * @dev: Device to update (UCLASS_CLK) 488bdf9cfdSMasahiro Yamada * @periph: Peripheral ID to update 49f26c8a8eSSimon Glass * @return new clock rate in Hz, or -ve error code 50f26c8a8eSSimon Glass */ 51f26c8a8eSSimon Glass ulong (*set_periph_rate)(struct udevice *dev, int periph, ulong rate); 52f26c8a8eSSimon Glass }; 53f26c8a8eSSimon Glass 54f26c8a8eSSimon Glass #define clk_get_ops(dev) ((struct clk_ops *)(dev)->driver->ops) 55f26c8a8eSSimon Glass 56f26c8a8eSSimon Glass /** 57f26c8a8eSSimon Glass * clk_get_rate() - Get current clock rate 58f26c8a8eSSimon Glass * 59f26c8a8eSSimon Glass * @dev: Device to check (UCLASS_CLK) 60f26c8a8eSSimon Glass * @return clock rate in Hz, or -ve error code 61f26c8a8eSSimon Glass */ 62f26c8a8eSSimon Glass ulong clk_get_rate(struct udevice *dev); 63f26c8a8eSSimon Glass 64f26c8a8eSSimon Glass /** 658bdf9cfdSMasahiro Yamada * clk_set_rate() - Set current clock rate 66f26c8a8eSSimon Glass * 67f26c8a8eSSimon Glass * @dev: Device to adjust 68f26c8a8eSSimon Glass * @rate: New clock rate in Hz 69f26c8a8eSSimon Glass * @return new rate, or -ve error code 70f26c8a8eSSimon Glass */ 71f26c8a8eSSimon Glass ulong clk_set_rate(struct udevice *dev, ulong rate); 72f26c8a8eSSimon Glass 73f26c8a8eSSimon Glass /** 74f26c8a8eSSimon Glass * clk_get_periph_rate() - Get current clock rate for a peripheral 75f26c8a8eSSimon Glass * 76f26c8a8eSSimon Glass * @dev: Device to check (UCLASS_CLK) 77f26c8a8eSSimon Glass * @return clock rate in Hz, -ve error code 78f26c8a8eSSimon Glass */ 79f26c8a8eSSimon Glass ulong clk_get_periph_rate(struct udevice *dev, int periph); 80f26c8a8eSSimon Glass 81f26c8a8eSSimon Glass /** 82f26c8a8eSSimon Glass * clk_set_periph_rate() - Set current clock rate for a peripheral 83f26c8a8eSSimon Glass * 84f26c8a8eSSimon Glass * @dev: Device to update (UCLASS_CLK) 858bdf9cfdSMasahiro Yamada * @periph: Peripheral ID to update 86f26c8a8eSSimon Glass * @return new clock rate in Hz, or -ve error code 87f26c8a8eSSimon Glass */ 88f26c8a8eSSimon Glass ulong clk_set_periph_rate(struct udevice *dev, int periph, ulong rate); 89f26c8a8eSSimon Glass 9008d0d6f3SMichal Simek #endif /* _CLK_H_ */ 91