Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Some small helpers for older Cirrus Logic parts.
0004  *
0005  * Copyright (C) 2021 Cirrus Logic, Inc. and
0006  *                    Cirrus Logic International Semiconductor Ltd.
0007  */
0008 
0009 static inline int cirrus_read_device_id(struct regmap *regmap, unsigned int reg)
0010 {
0011     u8 devid[3];
0012     int ret;
0013 
0014     ret = regmap_bulk_read(regmap, reg, devid, ARRAY_SIZE(devid));
0015     if (ret < 0)
0016         return ret;
0017 
0018     return ((devid[0] & 0xFF) << 12) |
0019            ((devid[1] & 0xFF) <<  4) |
0020            ((devid[2] & 0xF0) >>  4);
0021 }