18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * include/media/smiapp/smiapp-regs.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Generic driver for SMIA/SMIA++ compliant camera modules 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Copyright (C) 2011--2012 Nokia Corporation 88c2ecf20Sopenharmony_ci * Contact: Sakari Ailus <sakari.ailus@iki.fi> 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifndef SMIAPP_REGS_H 128c2ecf20Sopenharmony_ci#define SMIAPP_REGS_H 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <linux/i2c.h> 158c2ecf20Sopenharmony_ci#include <linux/types.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define SMIAPP_REG_ADDR(reg) ((u16)reg) 188c2ecf20Sopenharmony_ci#define SMIAPP_REG_WIDTH(reg) ((u8)(reg >> 16)) 198c2ecf20Sopenharmony_ci#define SMIAPP_REG_FLAGS(reg) ((u8)(reg >> 24)) 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* Use upper 8 bits of the type field for flags */ 228c2ecf20Sopenharmony_ci#define SMIAPP_REG_FLAG_FLOAT (1 << 24) 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci#define SMIAPP_REG_8BIT 1 258c2ecf20Sopenharmony_ci#define SMIAPP_REG_16BIT 2 268c2ecf20Sopenharmony_ci#define SMIAPP_REG_32BIT 4 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cistruct smiapp_sensor; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciint smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val); 318c2ecf20Sopenharmony_ciint smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val); 328c2ecf20Sopenharmony_ciint smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val); 338c2ecf20Sopenharmony_ciint smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val); 348c2ecf20Sopenharmony_ciint smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#endif 37