Loading sound/soc/fsl/fsl_ssi.c +26 −31 Original line number Diff line number Diff line /* * Freescale SSI ALSA SoC Digital Audio Interface (DAI) driver * * Author: Timur Tabi <timur@freescale.com> * * Copyright 2007-2010 Freescale Semiconductor, Inc. * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied. * * * Some notes why imx-pcm-fiq is used instead of DMA on some boards: * * The i.MX SSI core has some nasty limitations in AC97 mode. While most * sane processor vendors have a FIFO per AC97 slot, the i.MX has only * one FIFO which combines all valid receive slots. We cannot even select * which slots we want to receive. The WM9712 with which this driver * was developed with always sends GPIO status data in slot 12 which * we receive in our (PCM-) data stream. The only chance we have is to * manually skip this data in the FIQ handler. With sampling rates different * from 48000Hz not every frame has valid receive data, so the ratio * between pcm data and GPIO status data changes. Our FIQ handler is not * able to handle this, hence this driver only works with 48000Hz sampling * rate. * Reading and writing AC97 registers is another challenge. The core * provides us status bits when the read register is updated with *another* * value. When we read the same register two times (and the register still * contains the same value) these status bits are not set. We work * around this by not polling these bits but only wait a fixed delay. */ // SPDX-License-Identifier: GPL-2.0 // // Freescale SSI ALSA SoC Digital Audio Interface (DAI) driver // // Author: Timur Tabi <timur@freescale.com> // // Copyright 2007-2010 Freescale Semiconductor, Inc. // // Some notes why imx-pcm-fiq is used instead of DMA on some boards: // // The i.MX SSI core has some nasty limitations in AC97 mode. While most // sane processor vendors have a FIFO per AC97 slot, the i.MX has only // one FIFO which combines all valid receive slots. We cannot even select // which slots we want to receive. The WM9712 with which this driver // was developed with always sends GPIO status data in slot 12 which // we receive in our (PCM-) data stream. The only chance we have is to // manually skip this data in the FIQ handler. With sampling rates different // from 48000Hz not every frame has valid receive data, so the ratio // between pcm data and GPIO status data changes. Our FIQ handler is not // able to handle this, hence this driver only works with 48000Hz sampling // rate. // Reading and writing AC97 registers is another challenge. The core // provides us status bits when the read register is updated with *another* // value. When we read the same register two times (and the register still // contains the same value) these status bits are not set. We work // around this by not polling these bits but only wait a fixed delay. #include <linux/init.h> #include <linux/io.h> Loading sound/soc/fsl/fsl_ssi.h +2 −4 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0 */ /* * fsl_ssi.h - ALSA SSI interface for the Freescale MPC8610 and i.MX SoC * * Author: Timur Tabi <timur@freescale.com> * * Copyright 2007-2008 Freescale Semiconductor, Inc. This file is licensed * under the terms of the GNU General Public License version 2. This * program is licensed "as is" without any warranty of any kind, whether * express or implied. * Copyright 2007-2008 Freescale Semiconductor, Inc. */ #ifndef _MPC8610_I2S_H Loading sound/soc/fsl/fsl_ssi_dbg.c +7 −11 Original line number Diff line number Diff line /* * Freescale SSI ALSA SoC Digital Audio Interface (DAI) debugging functions * * Copyright 2014 Markus Pargmann <mpa@pengutronix.de>, Pengutronix * * Splitted from fsl_ssi.c * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied. */ // SPDX-License-Identifier: GPL-2.0 // // Freescale SSI ALSA SoC Digital Audio Interface (DAI) debugging functions // // Copyright 2014 Markus Pargmann <mpa@pengutronix.de>, Pengutronix // // Split from fsl_ssi.c #include <linux/debugfs.h> #include <linux/device.h> Loading Loading
sound/soc/fsl/fsl_ssi.c +26 −31 Original line number Diff line number Diff line /* * Freescale SSI ALSA SoC Digital Audio Interface (DAI) driver * * Author: Timur Tabi <timur@freescale.com> * * Copyright 2007-2010 Freescale Semiconductor, Inc. * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied. * * * Some notes why imx-pcm-fiq is used instead of DMA on some boards: * * The i.MX SSI core has some nasty limitations in AC97 mode. While most * sane processor vendors have a FIFO per AC97 slot, the i.MX has only * one FIFO which combines all valid receive slots. We cannot even select * which slots we want to receive. The WM9712 with which this driver * was developed with always sends GPIO status data in slot 12 which * we receive in our (PCM-) data stream. The only chance we have is to * manually skip this data in the FIQ handler. With sampling rates different * from 48000Hz not every frame has valid receive data, so the ratio * between pcm data and GPIO status data changes. Our FIQ handler is not * able to handle this, hence this driver only works with 48000Hz sampling * rate. * Reading and writing AC97 registers is another challenge. The core * provides us status bits when the read register is updated with *another* * value. When we read the same register two times (and the register still * contains the same value) these status bits are not set. We work * around this by not polling these bits but only wait a fixed delay. */ // SPDX-License-Identifier: GPL-2.0 // // Freescale SSI ALSA SoC Digital Audio Interface (DAI) driver // // Author: Timur Tabi <timur@freescale.com> // // Copyright 2007-2010 Freescale Semiconductor, Inc. // // Some notes why imx-pcm-fiq is used instead of DMA on some boards: // // The i.MX SSI core has some nasty limitations in AC97 mode. While most // sane processor vendors have a FIFO per AC97 slot, the i.MX has only // one FIFO which combines all valid receive slots. We cannot even select // which slots we want to receive. The WM9712 with which this driver // was developed with always sends GPIO status data in slot 12 which // we receive in our (PCM-) data stream. The only chance we have is to // manually skip this data in the FIQ handler. With sampling rates different // from 48000Hz not every frame has valid receive data, so the ratio // between pcm data and GPIO status data changes. Our FIQ handler is not // able to handle this, hence this driver only works with 48000Hz sampling // rate. // Reading and writing AC97 registers is another challenge. The core // provides us status bits when the read register is updated with *another* // value. When we read the same register two times (and the register still // contains the same value) these status bits are not set. We work // around this by not polling these bits but only wait a fixed delay. #include <linux/init.h> #include <linux/io.h> Loading
sound/soc/fsl/fsl_ssi.h +2 −4 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0 */ /* * fsl_ssi.h - ALSA SSI interface for the Freescale MPC8610 and i.MX SoC * * Author: Timur Tabi <timur@freescale.com> * * Copyright 2007-2008 Freescale Semiconductor, Inc. This file is licensed * under the terms of the GNU General Public License version 2. This * program is licensed "as is" without any warranty of any kind, whether * express or implied. * Copyright 2007-2008 Freescale Semiconductor, Inc. */ #ifndef _MPC8610_I2S_H Loading
sound/soc/fsl/fsl_ssi_dbg.c +7 −11 Original line number Diff line number Diff line /* * Freescale SSI ALSA SoC Digital Audio Interface (DAI) debugging functions * * Copyright 2014 Markus Pargmann <mpa@pengutronix.de>, Pengutronix * * Splitted from fsl_ssi.c * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied. */ // SPDX-License-Identifier: GPL-2.0 // // Freescale SSI ALSA SoC Digital Audio Interface (DAI) debugging functions // // Copyright 2014 Markus Pargmann <mpa@pengutronix.de>, Pengutronix // // Split from fsl_ssi.c #include <linux/debugfs.h> #include <linux/device.h> Loading