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 /** 67*0afa4b6cSNeil Armstrong * sandbox_clk_test_get_bulk - Ask the sandbox clock test device to request its 68*0afa4b6cSNeil Armstrong * clocks with the bulk clk API. 69*0afa4b6cSNeil Armstrong * 70*0afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 71*0afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 72*0afa4b6cSNeil Armstrong */ 73*0afa4b6cSNeil Armstrong int sandbox_clk_test_get_bulk(struct udevice *dev); 74*0afa4b6cSNeil 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 /** 102*0afa4b6cSNeil Armstrong * sandbox_clk_test_enable_bulk - Ask the sandbox clock test device to enable 103*0afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 104*0afa4b6cSNeil Armstrong * 105*0afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 106*0afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 107*0afa4b6cSNeil Armstrong */ 108*0afa4b6cSNeil Armstrong int sandbox_clk_test_enable_bulk(struct udevice *dev); 109*0afa4b6cSNeil 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 /** 119*0afa4b6cSNeil Armstrong * sandbox_clk_test_disable_bulk - Ask the sandbox clock test device to disable 120*0afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 121*0afa4b6cSNeil Armstrong * 122*0afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 123*0afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 124*0afa4b6cSNeil Armstrong */ 125*0afa4b6cSNeil Armstrong int sandbox_clk_test_disable_bulk(struct udevice *dev); 126*0afa4b6cSNeil 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); 134*0afa4b6cSNeil Armstrong /** 135*0afa4b6cSNeil Armstrong * sandbox_clk_test_release_bulk - Ask the sandbox clock test device to release 136*0afa4b6cSNeil Armstrong * all clocks in it's clock bulk struct. 137*0afa4b6cSNeil Armstrong * 138*0afa4b6cSNeil Armstrong * @dev: The sandbox clock test (client) devivce. 139*0afa4b6cSNeil Armstrong * @return: 0 if OK, or a negative error code. 140*0afa4b6cSNeil Armstrong */ 141*0afa4b6cSNeil Armstrong int sandbox_clk_test_release_bulk(struct udevice *dev); 142135aa950SStephen Warren 143135aa950SStephen Warren #endif 144