1135aa950SStephen Warren /* 2135aa950SStephen Warren * Copyright (c) 2016, NVIDIA CORPORATION. 3135aa950SStephen Warren * 4135aa950SStephen Warren * SPDX-License-Identifier: GPL-2.0 5135aa950SStephen Warren */ 6135aa950SStephen Warren 7135aa950SStephen Warren #ifndef __SANDBOX_CLK_H 8135aa950SStephen Warren #define __SANDBOX_CLK_H 9135aa950SStephen Warren 10135aa950SStephen Warren #include <common.h> 11135aa950SStephen Warren 12135aa950SStephen Warren struct udevice; 13135aa950SStephen Warren 14135aa950SStephen Warren /** 15135aa950SStephen Warren * enum sandbox_clk_id - Identity of clocks implemented by the sandbox clock 16135aa950SStephen Warren * provider. 17135aa950SStephen Warren * 18135aa950SStephen Warren * These IDs are within/relative-to the clock provider. 19135aa950SStephen Warren */ 20135aa950SStephen Warren enum sandbox_clk_id { 21135aa950SStephen Warren SANDBOX_CLK_ID_SPI, 22135aa950SStephen Warren SANDBOX_CLK_ID_I2C, 23135aa950SStephen Warren 24135aa950SStephen Warren SANDBOX_CLK_ID_COUNT, 25135aa950SStephen Warren }; 26135aa950SStephen Warren 27135aa950SStephen Warren /** 28135aa950SStephen Warren * enum sandbox_clk_test_id - Identity of the clocks consumed by the sandbox 29135aa950SStephen Warren * clock test device. 30135aa950SStephen Warren * 31135aa950SStephen Warren * These are the IDs the clock consumer knows the clocks as. 32135aa950SStephen Warren */ 33135aa950SStephen Warren enum sandbox_clk_test_id { 34135aa950SStephen Warren SANDBOX_CLK_TEST_ID_FIXED, 35135aa950SStephen Warren SANDBOX_CLK_TEST_ID_SPI, 36135aa950SStephen Warren SANDBOX_CLK_TEST_ID_I2C, 37135aa950SStephen Warren 38135aa950SStephen Warren SANDBOX_CLK_TEST_ID_COUNT, 39135aa950SStephen Warren }; 40135aa950SStephen Warren 41135aa950SStephen Warren /** 42135aa950SStephen Warren * sandbox_clk_query_rate - Query the current rate of a sandbox clock. 43135aa950SStephen Warren * 44135aa950SStephen Warren * @dev: The sandbox clock provider device. 45135aa950SStephen Warren * @id: The clock to query. 46135aa950SStephen Warren * @return: The rate of the clock. 47135aa950SStephen Warren */ 48135aa950SStephen Warren ulong sandbox_clk_query_rate(struct udevice *dev, int id); 49135aa950SStephen Warren /** 50135aa950SStephen Warren * sandbox_clk_query_enable - Query the enable state of a sandbox clock. 51135aa950SStephen Warren * 52135aa950SStephen Warren * @dev: The sandbox clock provider device. 53135aa950SStephen Warren * @id: The clock to query. 54135aa950SStephen Warren * @return: The rate of the clock. 55135aa950SStephen Warren */ 56135aa950SStephen Warren int sandbox_clk_query_enable(struct udevice *dev, int id); 57135aa950SStephen Warren 58135aa950SStephen Warren /** 59135aa950SStephen Warren * sandbox_clk_test_get - Ask the sandbox clock test device to request its 60135aa950SStephen Warren * clocks. 61135aa950SStephen Warren * 62135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 63135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 64135aa950SStephen Warren */ 65135aa950SStephen Warren int sandbox_clk_test_get(struct udevice *dev); 66135aa950SStephen Warren /** 670afa4b6cSNeil Armstrong * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its 680afa4b6cSNeil Armstrong * clocks with the bulk clk API. 690afa4b6cSNeil Armstrong * 700afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 710afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 720afa4b6cSNeil Armstrong */ 730afa4b6cSNeil Armstrong int sandbox_clk_test_get_bulk(struct udevice *dev); 740afa4b6cSNeil Armstrong /** 75135aa950SStephen Warren * sandbox_clk_test_get_rate - Ask the sandbox clock test device to query a 76135aa950SStephen Warren * clock's rate. 77135aa950SStephen Warren * 78135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 79135aa950SStephen Warren * @id: The test device's clock ID to query. 80135aa950SStephen Warren * @return: The rate of the clock. 81135aa950SStephen Warren */ 82135aa950SStephen Warren ulong sandbox_clk_test_get_rate(struct udevice *dev, int id); 83135aa950SStephen Warren /** 84135aa950SStephen Warren * sandbox_clk_test_set_rate - Ask the sandbox clock test device to set a 85135aa950SStephen Warren * clock's rate. 86135aa950SStephen Warren * 87135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 88135aa950SStephen Warren * @id: The test device's clock ID to configure. 89135aa950SStephen Warren * @return: The new rate of the clock. 90135aa950SStephen Warren */ 91135aa950SStephen Warren ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate); 92135aa950SStephen Warren /** 93135aa950SStephen Warren * sandbox_clk_test_enable - Ask the sandbox clock test device to enable a 94135aa950SStephen Warren * clock. 95135aa950SStephen Warren * 96135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 97135aa950SStephen Warren * @id: The test device's clock ID to configure. 98135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 99135aa950SStephen Warren */ 100135aa950SStephen Warren int sandbox_clk_test_enable(struct udevice *dev, int id); 101135aa950SStephen Warren /** 1020afa4b6cSNeil Armstrong * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable 1030afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 1040afa4b6cSNeil Armstrong * 1050afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 1060afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 1070afa4b6cSNeil Armstrong */ 1080afa4b6cSNeil Armstrong int sandbox_clk_test_enable_bulk(struct udevice *dev); 1090afa4b6cSNeil Armstrong /** 110135aa950SStephen Warren * sandbox_clk_test_disable - Ask the sandbox clock test device to disable a 111135aa950SStephen Warren * clock. 112135aa950SStephen Warren * 113135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 114135aa950SStephen Warren * @id: The test device's clock ID to configure. 115135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 116135aa950SStephen Warren */ 117135aa950SStephen Warren int sandbox_clk_test_disable(struct udevice *dev, int id); 118135aa950SStephen Warren /** 1190afa4b6cSNeil Armstrong * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable 1200afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 1210afa4b6cSNeil Armstrong * 1220afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 1230afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 1240afa4b6cSNeil Armstrong */ 1250afa4b6cSNeil Armstrong int sandbox_clk_test_disable_bulk(struct udevice *dev); 1260afa4b6cSNeil Armstrong /** 127135aa950SStephen Warren * sandbox_clk_test_free - Ask the sandbox clock test device to free its 128135aa950SStephen Warren * clocks. 129135aa950SStephen Warren * 130135aa950SStephen Warren * @dev: The sandbox clock test (client) devivce. 131135aa950SStephen Warren * @return: 0 if OK, or a negative error code. 132135aa950SStephen Warren */ 133135aa950SStephen Warren int sandbox_clk_test_free(struct udevice *dev); 1340afa4b6cSNeil Armstrong /** 1350afa4b6cSNeil Armstrong * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release 1360afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 1370afa4b6cSNeil Armstrong * 1380afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 1390afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 1400afa4b6cSNeil Armstrong */ 1410afa4b6cSNeil Armstrong int sandbox_clk_test_release_bulk(struct udevice *dev); 142*827e2ae9SFabrice Gasnier /** 143*827e2ae9SFabrice Gasnier * sandbox_clk_test_valid - Ask the sandbox clock test device to check its 144*827e2ae9SFabrice Gasnier * clocks are valid. 145*827e2ae9SFabrice Gasnier * 146*827e2ae9SFabrice Gasnier * @dev: The sandbox clock test (client) devivce. 147*827e2ae9SFabrice Gasnier * @return: 0 if OK, or a negative error code. 148*827e2ae9SFabrice Gasnier */ 149*827e2ae9SFabrice Gasnier int sandbox_clk_test_valid(struct udevice *dev); 150135aa950SStephen Warren 151135aa950SStephen Warren #endif 152