xref: /dflybsd-src/sys/dev/sound/pci/spicds.h (revision 2a1ad637466621af45d5a17185b33f3dcaaa1b1c)
1*2a1ad637SFrançois Tigeot /*-
24886ec58SHasso Tepper  * Copyright (c) 2006 Konstantin Dimitrov <kosio.dimitrov@gmail.com>
34886ec58SHasso Tepper  * Copyright (c) 2001 Katsurajima Naoto <raven@katsurajima.seya.yokohama.jp>
44886ec58SHasso Tepper  * All rights reserved.
54886ec58SHasso Tepper  *
64886ec58SHasso Tepper  * Redistribution and use in source and binary forms, with or without
74886ec58SHasso Tepper  * modification, are permitted provided that the following conditions
84886ec58SHasso Tepper  * are met:
94886ec58SHasso Tepper  * 1. Redistributions of source code must retain the above copyright
104886ec58SHasso Tepper  *    notice, this list of conditions and the following disclaimer.
114886ec58SHasso Tepper  * 2. Redistributions in binary form must reproduce the above copyright
124886ec58SHasso Tepper  *    notice, this list of conditions and the following disclaimer in the
134886ec58SHasso Tepper  *    documentation and/or other materials provided with the distribution.
144886ec58SHasso Tepper  *
154886ec58SHasso Tepper  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
164886ec58SHasso Tepper  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
174886ec58SHasso Tepper  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
184886ec58SHasso Tepper  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
194886ec58SHasso Tepper  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
204886ec58SHasso Tepper  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
214886ec58SHasso Tepper  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
224886ec58SHasso Tepper  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT
234886ec58SHasso Tepper  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
244886ec58SHasso Tepper  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
254886ec58SHasso Tepper  * SUCH DAMAGE.
264886ec58SHasso Tepper  *
27*2a1ad637SFrançois Tigeot  * $FreeBSD: head/sys/dev/sound/pci/spicds.h 205859 2010-03-29 20:27:17Z joel $
284886ec58SHasso Tepper  */
294886ec58SHasso Tepper 
304886ec58SHasso Tepper /* supported CODECs */
314886ec58SHasso Tepper #define SPICDS_TYPE_AK4524 0
324886ec58SHasso Tepper #define SPICDS_TYPE_AK4528 1
334886ec58SHasso Tepper #define SPICDS_TYPE_WM8770 2
344886ec58SHasso Tepper #define SPICDS_TYPE_AK4358 3
354886ec58SHasso Tepper #define SPICDS_TYPE_AK4381 4
364886ec58SHasso Tepper #define SPICDS_TYPE_AK4396 5
374886ec58SHasso Tepper 
384886ec58SHasso Tepper /* AK4524/AK4528 control registers */
394886ec58SHasso Tepper #define AK4524_POWER 0x00
404886ec58SHasso Tepper #define AK4528_POWER 0x00
414886ec58SHasso Tepper #define   AK452X_POWER_PWDA 0x01
424886ec58SHasso Tepper #define   AK452X_POWER_PWAD 0x02
434886ec58SHasso Tepper #define   AK452X_POWER_PWVR 0x04
444886ec58SHasso Tepper #define AK4524_RESET 0x01
454886ec58SHasso Tepper #define AK4528_RESET 0x01
464886ec58SHasso Tepper #define   AK452X_RESET_RSDA 0x01
474886ec58SHasso Tepper #define   AK452X_RESET_RSAD 0x02
484886ec58SHasso Tepper #define AK4524_FORMAT 0x02
494886ec58SHasso Tepper #define AK4528_FORMAT 0x02
504886ec58SHasso Tepper #define   AK452X_FORMAT_1X       0x00
514886ec58SHasso Tepper #define   AK452X_FORMAT_2X       0x01
524886ec58SHasso Tepper #define   AK452X_FORMAT_4X1      0x02
534886ec58SHasso Tepper #define   AK452X_FORMAT_4X2      0x03
544886ec58SHasso Tepper #define   AK452X_FORMAT_256FSN   0x00
554886ec58SHasso Tepper #define   AK452X_FORMAT_512FSN   0x04
564886ec58SHasso Tepper #define   AK452X_FORMAT_1024FSN  0x08
574886ec58SHasso Tepper #define   AK452X_FORMAT_384FSN   0x10
584886ec58SHasso Tepper #define   AK452X_FORMAT_768FSN   0x14
594886ec58SHasso Tepper #define   AK452X_FORMAT_OM24IL16 0x00
604886ec58SHasso Tepper #define   AK452X_FORMAT_OM24IL20 0x20
614886ec58SHasso Tepper #define   AK452X_FORMAT_OM24IM24 0x40
624886ec58SHasso Tepper #define   AK452X_FORMAT_I2S      0x60
634886ec58SHasso Tepper #define   AK452X_FORMAT_OM24IL24 0x80
644886ec58SHasso Tepper #define AK4524_DVC 0x03
654886ec58SHasso Tepper #define   AK452X_DVC_DEM441  0x00
664886ec58SHasso Tepper #define   AK452X_DVC_DEMOFF  0x01
674886ec58SHasso Tepper #define   AK452X_DVC_DEM48   0x02
684886ec58SHasso Tepper #define   AK452X_DVC_DEM32   0x03
694886ec58SHasso Tepper #define   AK452X_DVC_ZTM256  0x00
704886ec58SHasso Tepper #define   AK452X_DVC_ZTM512  0x04
714886ec58SHasso Tepper #define   AK452X_DVC_ZTM1024 0x08
724886ec58SHasso Tepper #define   AK452X_DVC_ZTM2048 0x0c
734886ec58SHasso Tepper #define   AK452X_DVC_ZCE     0x10
744886ec58SHasso Tepper #define   AK452X_DVC_HPFL    0x04
754886ec58SHasso Tepper #define   AK452X_DVC_HPFR    0x08
764886ec58SHasso Tepper #define   AK452X_DVC_SMUTE   0x80
774886ec58SHasso Tepper #define AK4524_LIPGA 0x04
784886ec58SHasso Tepper #define AK4524_RIPGA 0x05
794886ec58SHasso Tepper #define AK4524_LOATT 0x06
804886ec58SHasso Tepper #define AK4524_ROATT 0x07
814886ec58SHasso Tepper #define AK4528_LOATT 0x04
824886ec58SHasso Tepper #define AK4528_ROATT 0x05
834886ec58SHasso Tepper 
844886ec58SHasso Tepper /* WM8770 control registers */
854886ec58SHasso Tepper #define WM8770_AOATT_L1 0x00
864886ec58SHasso Tepper #define WM8770_AOATT_R1 0x01
874886ec58SHasso Tepper #define WM8770_AOATT_L2 0x02
884886ec58SHasso Tepper #define WM8770_AOATT_R2 0x03
894886ec58SHasso Tepper #define WM8770_AOATT_L3 0x04
904886ec58SHasso Tepper #define WM8770_AOATT_R3 0x05
914886ec58SHasso Tepper #define WM8770_AOATT_L4 0x06
924886ec58SHasso Tepper #define WM8770_AOATT_R4 0x07
934886ec58SHasso Tepper #define WM8770_AOATT_MAST 0x08
944886ec58SHasso Tepper #define WM8770_AOATT_UPDATE 0x100
954886ec58SHasso Tepper 
964886ec58SHasso Tepper /* AK4358 control registers */
974886ec58SHasso Tepper #define AK4358_LO1ATT 0x04
984886ec58SHasso Tepper #define AK4358_RO1ATT 0x05
994886ec58SHasso Tepper #define AK4358_OATT_ENABLE 0x80
1004886ec58SHasso Tepper 
1014886ec58SHasso Tepper /* AK4381 control registers */
1024886ec58SHasso Tepper #define AK4381_LOATT 0x03
1034886ec58SHasso Tepper #define AK4381_ROATT 0x04
1044886ec58SHasso Tepper 
1054886ec58SHasso Tepper /* AK4396 control registers */
1064886ec58SHasso Tepper #define AK4396_LOATT 0x03
1074886ec58SHasso Tepper #define AK4396_ROATT 0x04
1084886ec58SHasso Tepper 
1094886ec58SHasso Tepper struct spicds_info;
1104886ec58SHasso Tepper 
1114886ec58SHasso Tepper typedef void (*spicds_ctrl)(void *, unsigned int, unsigned int, unsigned int);
1124886ec58SHasso Tepper 
1134886ec58SHasso Tepper struct spicds_info *spicds_create(device_t dev, void *devinfo, int num, spicds_ctrl);
1144886ec58SHasso Tepper void spicds_destroy(struct spicds_info *codec);
1154886ec58SHasso Tepper void spicds_settype(struct spicds_info *codec, unsigned int type);
1164886ec58SHasso Tepper void spicds_setcif(struct spicds_info *codec, unsigned int cif);
1174886ec58SHasso Tepper void spicds_setformat(struct spicds_info *codec, unsigned int format);
1184886ec58SHasso Tepper void spicds_setdvc(struct spicds_info *codec, unsigned int dvc);
1194886ec58SHasso Tepper void spicds_init(struct spicds_info *codec);
1204886ec58SHasso Tepper void spicds_reinit(struct spicds_info *codec);
1214886ec58SHasso Tepper void spicds_set(struct spicds_info *codec, int dir, unsigned int left, unsigned int right);
122