1ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus/* 2ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * include/media/smiapp/smiapp-regs.h 3ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 4ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Generic driver for SMIA/SMIA++ compliant camera modules 5ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 6ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Copyright (C) 2011--2012 Nokia Corporation 78c5dff905714446f8836b40a93bfeabd0aea8c82Sakari Ailus * Contact: Sakari Ailus <sakari.ailus@iki.fi> 8ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 9ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * This program is free software; you can redistribute it and/or 10ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * modify it under the terms of the GNU General Public License 11ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * version 2 as published by the Free Software Foundation. 12ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 13ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * This program is distributed in the hope that it will be useful, but 14ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * WITHOUT ANY WARRANTY; without even the implied warranty of 15ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * General Public License for more details. 17ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 18ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * You should have received a copy of the GNU General Public License 19ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * along with this program; if not, write to the Free Software 20ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 21ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 02110-1301 USA 22ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 23ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus */ 24ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 25ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#ifndef SMIAPP_REGS_H 26ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#define SMIAPP_REGS_H 27ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 28ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#include <linux/i2c.h> 29ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#include <linux/types.h> 30ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 31f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_ADDR(reg) ((u16)reg) 32f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_WIDTH(reg) ((u8)(reg >> 16)) 33f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_FLAGS(reg) ((u8)(reg >> 24)) 34f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus 35ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus/* Use upper 8 bits of the type field for flags */ 366fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_FLAG_FLOAT (1 << 24) 37ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 386fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_8BIT 1 396fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_16BIT 2 406fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_32BIT 4 41ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 421e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusstruct smiapp_sensor; 431e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailus 446f7481b6685daf693e995e8653f6c8d27cfe5bfcSakari Ailusint smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val); 451e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusint smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val); 46ceb9e30e9f4a892997a61f1f5a30bc5b561c9e67Sakari Ailusint smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val); 476f7481b6685daf693e995e8653f6c8d27cfe5bfcSakari Ailusint smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val); 481e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusint smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val); 49ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus 50ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#endif 51