1 // SPDX-License-Identifier: GPL-2.0-or-later 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 2 /* 3 * Load Analog Devices SigmaStudio firmware fi 3 * Load Analog Devices SigmaStudio firmware files 4 * 4 * 5 * Copyright 2009-2011 Analog Devices Inc. 5 * Copyright 2009-2011 Analog Devices Inc. 6 */ 6 */ 7 7 8 #include <linux/regmap.h> 8 #include <linux/regmap.h> 9 #include <linux/export.h> 9 #include <linux/export.h> 10 #include <linux/module.h> 10 #include <linux/module.h> 11 11 12 #include "sigmadsp.h" 12 #include "sigmadsp.h" 13 13 14 static int sigmadsp_write_regmap(void *control 14 static int sigmadsp_write_regmap(void *control_data, 15 unsigned int addr, const uint8_t data[ 15 unsigned int addr, const uint8_t data[], size_t len) 16 { 16 { 17 return regmap_raw_write(control_data, 17 return regmap_raw_write(control_data, addr, 18 data, len); 18 data, len); 19 } 19 } 20 20 21 static int sigmadsp_read_regmap(void *control_ 21 static int sigmadsp_read_regmap(void *control_data, 22 unsigned int addr, uint8_t data[], siz 22 unsigned int addr, uint8_t data[], size_t len) 23 { 23 { 24 return regmap_raw_read(control_data, a 24 return regmap_raw_read(control_data, addr, 25 data, len); 25 data, len); 26 } 26 } 27 27 28 /** 28 /** 29 * devm_sigmadsp_init_regmap() - Initialize Si !! 29 * devm_sigmadsp_init_i2c() - Initialize SigmaDSP instance 30 * @dev: The parent device 30 * @dev: The parent device 31 * @regmap: Regmap instance to use 31 * @regmap: Regmap instance to use 32 * @ops: The sigmadsp_ops to use for this inst 32 * @ops: The sigmadsp_ops to use for this instance 33 * @firmware_name: Name of the firmware file t 33 * @firmware_name: Name of the firmware file to load 34 * 34 * 35 * Allocates a SigmaDSP instance and loads the 35 * Allocates a SigmaDSP instance and loads the specified firmware file. 36 * 36 * 37 * Returns a pointer to a struct sigmadsp on s 37 * Returns a pointer to a struct sigmadsp on success, or a PTR_ERR() on error. 38 */ 38 */ 39 struct sigmadsp *devm_sigmadsp_init_regmap(str 39 struct sigmadsp *devm_sigmadsp_init_regmap(struct device *dev, 40 struct regmap *regmap, const struct si 40 struct regmap *regmap, const struct sigmadsp_ops *ops, 41 const char *firmware_name) 41 const char *firmware_name) 42 { 42 { 43 struct sigmadsp *sigmadsp; 43 struct sigmadsp *sigmadsp; 44 44 45 sigmadsp = devm_sigmadsp_init(dev, ops 45 sigmadsp = devm_sigmadsp_init(dev, ops, firmware_name); 46 if (IS_ERR(sigmadsp)) 46 if (IS_ERR(sigmadsp)) 47 return sigmadsp; 47 return sigmadsp; 48 48 49 sigmadsp->control_data = regmap; 49 sigmadsp->control_data = regmap; 50 sigmadsp->write = sigmadsp_write_regma 50 sigmadsp->write = sigmadsp_write_regmap; 51 sigmadsp->read = sigmadsp_read_regmap; 51 sigmadsp->read = sigmadsp_read_regmap; 52 52 53 return sigmadsp; 53 return sigmadsp; 54 } 54 } 55 EXPORT_SYMBOL_GPL(devm_sigmadsp_init_regmap); 55 EXPORT_SYMBOL_GPL(devm_sigmadsp_init_regmap); 56 56 57 MODULE_AUTHOR("Lars-Peter Clausen <lars@metafo 57 MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); 58 MODULE_DESCRIPTION("SigmaDSP regmap firmware l 58 MODULE_DESCRIPTION("SigmaDSP regmap firmware loader"); 59 MODULE_LICENSE("GPL"); 59 MODULE_LICENSE("GPL"); 60 60
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.