/* * Copyright (C) 2007 STMicroelectronics Limited * Author: Stuart Menefy * * May be copied or modified under the terms of the GNU General Public * License. See linux/COPYING for more information. */ #ifndef __LINUX_STM_SYSCONF_H #define __LINUX_STM_SYSCONF_H #include #include struct sysconf_field; /** * sysconf_claim - Claim ownership of a field of a sysconfig register * @group: register group (ie. SYS_CFG, SYS_STA); SOC-specific * @num: register number * @lsb: the LSB of the register we are claiming * @msb: the MSB of the register we are claiming * @devname: device claiming the field * * This function claims ownership of a field from a sysconfig register. * The part of the sysconfig register being claimed is from bit @lsb * through to bit @msb inclusive. To claim the whole register, @lsb * should be 0, @msb 31 (or 63 for systems with 64 bit sysconfig registers). * * It returns a &struct sysconf_field which can be used in subsequent * operations on this field. */ struct sysconf_field *sysconf_claim(int group, int num, int lsb, int msb, const char *devname); /** * sysconf_release - Release ownership of a field of a sysconfig register * @field: the sysconfig field to write to * * Release ownership of a field from a sysconf register. * @field must have been claimed using sysconf_claim(). */ void sysconf_release(struct sysconf_field *field); /** * sysconf_write - Write a value into a field of a sysconfig register * @field: the sysconfig field to write to * @value: the value to write into the field * * This writes @value into the field of the sysconfig register @field. * @field must have been claimed using sysconf_claim(). */ void sysconf_write(struct sysconf_field *field, unsigned long value); /** * sysconf_read - Read a field of a sysconfig register * @field: the sysconfig field to read * * This reads a field of the sysconfig register @field. * @field must have been claimed using sysconf_claim(). */ unsigned long sysconf_read(struct sysconf_field *field); /** * sysconf_address - Return the address memory of sysconfig register * @field: the sysconfig field to return * * This returns the address memory of sysconfig register * @field must have been claimed using sysconf_claim(). */ void *sysconf_address(struct sysconf_field *field); /** * sysconf_mask - Return the bitmask of sysconfig register * @field: the sysconfig field to return * * This returns the bitmask of sysconfig register * @field must have been claimed using sysconf_claim(). */ unsigned long sysconf_mask(struct sysconf_field *field); /** * sysconf_early_init - Used by board initialization code */ void sysconf_early_init(struct platform_device *pdevs, int pdevs_num); /** * sysconf_group_name - Return registers group name * @group: register group (ie. SYS_CFG, SYS_STA); SOC-specific */ const char *sysconf_group_name(int group); /** * sysconf_reg_name - Return register name * @group: register group (ie. SYS_CFG, SYS_STA); SOC-specific * @num: register number */ const char *sysconf_reg_name(int group, int num); #endif