183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */ 2135aa950SStephen Warren /* 3135aa950SStephen Warren * Copyright (c) 2016, NVIDIA CORPORATION. 4135aa950SStephen Warren */ 5135aa950SStephen Warren 6135aa950SStephen Warren #ifndef __SANDBOX_CLK_H 7135aa950SStephen Warren #define __SANDBOX_CLK_H 8135aa950SStephen Warren 9135aa950SStephen Warren #include <common.h> 10135aa950SStephen Warren 11135aa950SStephen Warren struct udevice; 12135aa950SStephen Warren 13135aa950SStephen Warren /** 14135aa950SStephen Warren * enum sandbox_clk_id - Identity of clocks implemented by the sandbox clock 15135aa950SStephen Warren * provider. 16135aa950SStephen Warren * 17135aa950SStephen Warren * These IDs are within/relative-to the clock provider. 18135aa950SStephen Warren */ 19135aa950SStephen Warren enum sandbox_clk_id { 20135aa950SStephen Warren SANDBOX_CLK_ID_SPI, 21135aa950SStephen Warren SANDBOX_CLK_ID_I2C, 22135aa950SStephen Warren 23135aa950SStephen Warren SANDBOX_CLK_ID_COUNT, 24135aa950SStephen Warren }; 25135aa950SStephen Warren 26135aa950SStephen Warren /** 27135aa950SStephen Warren * enum sandbox_clk_test_id - Identity of the clocks consumed by the sandbox 28135aa950SStephen Warren * clock test device. 29135aa950SStephen Warren * 30135aa950SStephen Warren * These are the IDs the clock consumer knows the clocks as. 31135aa950SStephen Warren */ 32135aa950SStephen Warren enum sandbox_clk_test_id { 33135aa950SStephen Warren SANDBOX_CLK_TEST_ID_FIXED, 34135aa950SStephen Warren SANDBOX_CLK_TEST_ID_SPI, 35135aa950SStephen Warren SANDBOX_CLK_TEST_ID_I2C, 36135aa950SStephen Warren 37135aa950SStephen Warren SANDBOX_CLK_TEST_ID_COUNT, 38135aa950SStephen Warren }; 39135aa950SStephen Warren 40135aa950SStephen Warren /** 41135aa950SStephen Warren * sandbox_clk_query_rate - Query the current rate of a sandbox clock. 42135aa950SStephen Warren * 43135aa950SStephen Warren * @dev: The sandbox clock provider device. 44135aa950SStephen Warren * @id: The clock to query. 45135aa950SStephen Warren * @return: The rate of the clock. 46135aa950SStephen Warren */ 47135aa950SStephen Warren ulong sandbox_clk_query_rate(struct udevice *dev, int id); 48135aa950SStephen Warren /** 49135aa950SStephen Warren * sandbox_clk_query_enable - Query the enable state of a sandbox clock. 50135aa950SStephen Warren * 51135aa950SStephen Warren * @dev: The sandbox clock provider device. 52135aa950SStephen Warren * @id: The clock to query. 53135aa950SStephen Warren * @return: The rate of the clock. 54135aa950SStephen Warren */ 55135aa950SStephen Warren int sandbox_clk_query_enable(struct udevice *dev, int id); 56135aa950SStephen Warren 57135aa950SStephen Warren /** 58135aa950SStephen Warren * sandbox_clk_test_get - Ask the sandbox clock test device to request its 59135aa950SStephen Warren * clocks. 60135aa950SStephen Warren * 61135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 62135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 63135aa950SStephen Warren */ 64135aa950SStephen Warren int sandbox_clk_test_get(struct udevice *dev); 65135aa950SStephen Warren /** 6665388d0dSNeil Armstrong * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its 6765388d0dSNeil Armstrong * clocks with the bulk clk API. 6865388d0dSNeil Armstrong * 6965388d0dSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 7065388d0dSNeil Armstrong * @return: 0 if OK, or a negative error code. 7165388d0dSNeil Armstrong */ 7265388d0dSNeil Armstrong int sandbox_clk_test_get_bulk(struct udevice *dev); 7365388d0dSNeil Armstrong /** 74135aa950SStephen Warren * sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a 75135aa950SStephen Warren * clock's rate. 76135aa950SStephen Warren * 77135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 78135aa950SStephen Warren * @id: The test device's clock ID to query. 79135aa950SStephen Warren * @return: The rate of the clock. 80135aa950SStephen Warren */ 81135aa950SStephen Warren ulong sandbox_clk_test_get_rate(struct udevice *dev, int id); 82135aa950SStephen Warren /** 83135aa950SStephen Warren * sandbox_clk_test_set_rate - Ask the sandbox clock test device to set a 84135aa950SStephen Warren * clock's rate. 85135aa950SStephen Warren * 86135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 87135aa950SStephen Warren * @id: The test device's clock ID to configure. 88135aa950SStephen Warren * @return: The new rate of the clock. 89135aa950SStephen Warren */ 90135aa950SStephen Warren ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate); 91135aa950SStephen Warren /** 92135aa950SStephen Warren * sandbox_clk_test_enable - Ask the sandbox clock test device to enable a 93135aa950SStephen Warren * clock. 94135aa950SStephen Warren * 95135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 96135aa950SStephen Warren * @id: The test device's clock ID to configure. 97135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 98135aa950SStephen Warren */ 99135aa950SStephen Warren int sandbox_clk_test_enable(struct udevice *dev, int id); 100135aa950SStephen Warren /** 10165388d0dSNeil Armstrong * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable 10265388d0dSNeil Armstrong * all clocks in it's clock bulk struct. 10365388d0dSNeil Armstrong * 10465388d0dSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 10565388d0dSNeil Armstrong * @return: 0 if OK, or a negative error code. 10665388d0dSNeil Armstrong */ 10765388d0dSNeil Armstrong int sandbox_clk_test_enable_bulk(struct udevice *dev); 10865388d0dSNeil Armstrong /** 109135aa950SStephen Warren * sandbox_clk_test_disable - Ask the sandbox clock test device to disable a 110135aa950SStephen Warren * clock. 111135aa950SStephen Warren * 112135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 113135aa950SStephen Warren * @id: The test device's clock ID to configure. 114135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 115135aa950SStephen Warren */ 116135aa950SStephen Warren int sandbox_clk_test_disable(struct udevice *dev, int id); 117135aa950SStephen Warren /** 11865388d0dSNeil Armstrong * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable 11965388d0dSNeil Armstrong * all clocks in it's clock bulk struct. 12065388d0dSNeil Armstrong * 12165388d0dSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 12265388d0dSNeil Armstrong * @return: 0 if OK, or a negative error code. 12365388d0dSNeil Armstrong */ 12465388d0dSNeil Armstrong int sandbox_clk_test_disable_bulk(struct udevice *dev); 12565388d0dSNeil Armstrong /** 126135aa950SStephen Warren * sandbox_clk_test_free - Ask the sandbox clock test device to free its 127135aa950SStephen Warren * clocks. 128135aa950SStephen Warren * 129135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 130135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 131135aa950SStephen Warren */ 132135aa950SStephen Warren int sandbox_clk_test_free(struct udevice *dev); 13365388d0dSNeil Armstrong /** 13465388d0dSNeil Armstrong * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release 13565388d0dSNeil Armstrong * all clocks in it's clock bulk struct. 13665388d0dSNeil Armstrong * 13765388d0dSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 13865388d0dSNeil Armstrong * @return: 0 if OK, or a negative error code. 13965388d0dSNeil Armstrong */ 14065388d0dSNeil Armstrong int sandbox_clk_test_release_bulk(struct udevice *dev); 141*1fe243a1SFabrice Gasnier /** 142*1fe243a1SFabrice Gasnier * sandbox_clk_test_valid - Ask the sandbox clock test device to check its 143*1fe243a1SFabrice Gasnier * clocks are valid. 144*1fe243a1SFabrice Gasnier * 145*1fe243a1SFabrice Gasnier * @dev: The sandbox clock test (client) devivce. 146*1fe243a1SFabrice Gasnier * @return: 0 if OK, or a negative error code. 147*1fe243a1SFabrice Gasnier */ 148*1fe243a1SFabrice Gasnier int sandbox_clk_test_valid(struct udevice *dev); 149135aa950SStephen Warren 150135aa950SStephen Warren #endif 151