/*
    cs5345.h - definition for cs5345 inputs and outputs

    Copyright (C) 2007 Hans Verkuil (hverkuil@xs4all.nl)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef _CS5345_H_
#define _CS5345_H_

/* CS5345 HW inputs */
#define CS5345_IN_MIC 0
#define CS5345_IN_1   1
#define CS5345_IN_2   2
#define CS5345_IN_3   3
#define CS5345_IN_4   4
#define CS5345_IN_5   5
#define CS5345_IN_6   6

#define CS5345_MCLK_1   0x00
#define CS5345_MCLK_1_5 0x10
#define CS5345_MCLK_2   0x20
#define CS5345_MCLK_3   0x30
#define CS5345_MCLK_4   0x40

#endif
