root/include/linux/mfd/lochnagar.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Lochnagar internals
   4  *
   5  * Copyright (c) 2013-2018 Cirrus Logic, Inc. and
   6  *                         Cirrus Logic International Semiconductor Ltd.
   7  *
   8  * Author: Charles Keepax <ckeepax@opensource.cirrus.com>
   9  */
  10 
  11 #include <linux/device.h>
  12 #include <linux/mutex.h>
  13 #include <linux/regmap.h>
  14 
  15 #ifndef CIRRUS_LOCHNAGAR_H
  16 #define CIRRUS_LOCHNAGAR_H
  17 
  18 enum lochnagar_type {
  19         LOCHNAGAR1,
  20         LOCHNAGAR2,
  21 };
  22 
  23 /**
  24  * struct lochnagar - Core data for the Lochnagar audio board driver.
  25  *
  26  * @type: The type of Lochnagar device connected.
  27  * @dev: A pointer to the struct device for the main MFD.
  28  * @regmap: The devices main register map.
  29  * @analogue_config_lock: Lock used to protect updates in the analogue
  30  * configuration as these must not be changed whilst the hardware is processing
  31  * the last update.
  32  */
  33 struct lochnagar {
  34         enum lochnagar_type type;
  35         struct device *dev;
  36         struct regmap *regmap;
  37 
  38         /* Lock to protect updates to the analogue configuration */
  39         struct mutex analogue_config_lock;
  40 };
  41 
  42 /* Register Addresses */
  43 #define LOCHNAGAR_SOFTWARE_RESET                             0x00
  44 #define LOCHNAGAR_FIRMWARE_ID1                               0x01
  45 #define LOCHNAGAR_FIRMWARE_ID2                               0x02
  46 
  47 /* (0x0000)  Software Reset */
  48 #define LOCHNAGAR_DEVICE_ID_MASK                           0xFFFC
  49 #define LOCHNAGAR_DEVICE_ID_SHIFT                               2
  50 #define LOCHNAGAR_REV_ID_MASK                              0x0003
  51 #define LOCHNAGAR_REV_ID_SHIFT                                  0
  52 
  53 int lochnagar_update_config(struct lochnagar *lochnagar);
  54 
  55 #endif

/* [<][>][^][v][top][bottom][index][help] */