12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139 |
- From 6a5d72f7ea13b48840353fd22f672dc3af8b9fc5 Mon Sep 17 00:00:00 2001
- From: Aaron Shaw <shawaj@gmail.com>
- Date: Thu, 26 May 2016 23:37:11 +0100
- Subject: [PATCH] Change BoomBerry name to JustBoom in all locations due to
- legal challenge
- ---
- arch/arm/boot/dts/overlays/Makefile | 4 +-
- arch/arm/boot/dts/overlays/README | 52 ++---
- .../boot/dts/overlays/boomberry-dac-overlay.dts | 43 -----
- .../boot/dts/overlays/boomberry-digi-overlay.dts | 39 ----
- .../arm/boot/dts/overlays/justboom-dac-overlay.dts | 43 +++++
- .../boot/dts/overlays/justboom-digi-overlay.dts | 39 ++++
- arch/arm/configs/bcm2709_defconfig | 4 +-
- arch/arm/configs/bcmrpi_defconfig | 4 +-
- sound/soc/bcm/Kconfig | 12 +-
- sound/soc/bcm/Makefile | 8 +-
- sound/soc/bcm/boomberry-dac.c | 162 ----------------
- sound/soc/bcm/boomberry-digi.c | 215 ---------------------
- sound/soc/bcm/justboom-dac.c | 162 ++++++++++++++++
- sound/soc/bcm/justboom-digi.c | 215 +++++++++++++++++++++
- 14 files changed, 501 insertions(+), 501 deletions(-)
- delete mode 100644 arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts
- delete mode 100644 arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts
- create mode 100644 arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
- create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
- delete mode 100644 sound/soc/bcm/boomberry-dac.c
- delete mode 100644 sound/soc/bcm/boomberry-digi.c
- create mode 100644 sound/soc/bcm/justboom-dac.c
- create mode 100644 sound/soc/bcm/justboom-digi.c
- --- a/arch/arm/boot/dts/overlays/Makefile
- +++ b/arch/arm/boot/dts/overlays/Makefile
- @@ -18,8 +18,6 @@ dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqd
- dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo
- -dtbo-$(RPI_DT_OVERLAYS) += boomberry-dac.dtbo
- -dtbo-$(RPI_DT_OVERLAYS) += boomberry-digi.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo
- @@ -43,6 +41,8 @@ dtbo-$(RPI_DT_OVERLAYS) += i2s-gpio28-31
- dtbo-$(RPI_DT_OVERLAYS) += i2s-mmap.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += iqaudio-dac.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += iqaudio-dacplus.dtbo
- +dtbo-$(RPI_DT_OVERLAYS) += justboom-dac.dtbo
- +dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo
- --- a/arch/arm/boot/dts/overlays/README
- +++ b/arch/arm/boot/dts/overlays/README
- @@ -238,32 +238,6 @@ Load: dtoverlay=bmp085_i2c-sensor
- Params: <None>
-
-
- -Name: boomberry-dac
- -Info: Configures the BoomBerry DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
- - cards
- -Load: dtoverlay=boomberry-dac,<param>=<val>
- -Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
- - Digital volume control. Enable with
- - "dtoverlay=boomberry-dac,24db_digital_gain"
- - (The default behaviour is that the Digital
- - volume control is limited to a maximum of
- - 0dB. ie. it can attenuate but not provide
- - gain. For most users, this will be desired
- - as it will prevent clipping. By appending
- - the 24dB_digital_gain parameter, the Digital
- - volume control will allow up to 24dB of
- - gain. If this parameter is enabled, it is the
- - responsibility of the user to ensure that
- - the Digital volume control is set to a value
- - that does not result in clipping/distortion!)
- -
- -
- -Name: boomberry-digi
- -Info: Configures the BoomBerry Digi HAT and Digi Zero audio cards
- -Load: dtoverlay=boomberry-digi
- -Params: <None>
- -
- -
- Name: dht11
- Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors
- Also sometimes found with the part number(s) AM230x.
- @@ -541,6 +515,32 @@ Params: 24db_digital_gain Allow ga
- that does not result in clipping/distortion!)
-
-
- +Name: justboom-dac
- +Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
- + cards
- +Load: dtoverlay=justboom-dac,<param>=<val>
- +Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
- + Digital volume control. Enable with
- + "dtoverlay=justboom-dac,24db_digital_gain"
- + (The default behaviour is that the Digital
- + volume control is limited to a maximum of
- + 0dB. ie. it can attenuate but not provide
- + gain. For most users, this will be desired
- + as it will prevent clipping. By appending
- + the 24dB_digital_gain parameter, the Digital
- + volume control will allow up to 24dB of
- + gain. If this parameter is enabled, it is the
- + responsibility of the user to ensure that
- + the Digital volume control is set to a value
- + that does not result in clipping/distortion!)
- +
- +
- +Name: justboom-digi
- +Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
- +Load: dtoverlay=justboom-digi
- +Params: <None>
- +
- +
- Name: lirc-rpi
- Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi)
- Consult the module documentation for more details.
- --- a/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts
- +++ /dev/null
- @@ -1,43 +0,0 @@
- -// Definitions for BoomBerry DAC
- -/dts-v1/;
- -/plugin/;
- -
- -/ {
- - compatible = "brcm,bcm2708";
- -
- - fragment@0 {
- - target = <&i2s>;
- - __overlay__ {
- - status = "okay";
- - };
- - };
- -
- - fragment@1 {
- - target = <&i2c1>;
- - __overlay__ {
- - #address-cells = <1>;
- - #size-cells = <0>;
- - status = "okay";
- -
- - pcm5122@4d {
- - #sound-dai-cells = <0>;
- - compatible = "ti,pcm5122";
- - reg = <0x4d>;
- - status = "okay";
- - };
- - };
- - };
- -
- - fragment@2 {
- - target = <&sound>;
- - frag2: __overlay__ {
- - compatible = "boomberry,boomberry-dac";
- - i2s-controller = <&i2s>;
- - status = "okay";
- - };
- - };
- -
- - __overrides__ {
- - 24db_digital_gain = <&frag2>,"boomberry,24db_digital_gain?";
- - };
- -};
- --- a/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts
- +++ /dev/null
- @@ -1,39 +0,0 @@
- -// Definitions for BoomBerry Digi
- -/dts-v1/;
- -/plugin/;
- -
- -/ {
- - compatible = "brcm,bcm2708";
- -
- - fragment@0 {
- - target = <&i2s>;
- - __overlay__ {
- - status = "okay";
- - };
- - };
- -
- - fragment@1 {
- - target = <&i2c1>;
- - __overlay__ {
- - #address-cells = <1>;
- - #size-cells = <0>;
- - status = "okay";
- -
- - wm8804@3b {
- - #sound-dai-cells = <0>;
- - compatible = "wlf,wm8804";
- - reg = <0x3b>;
- - status = "okay";
- - };
- - };
- - };
- -
- - fragment@2 {
- - target = <&sound>;
- - __overlay__ {
- - compatible = "boomberry,boomberry-digi";
- - i2s-controller = <&i2s>;
- - status = "okay";
- - };
- - };
- -};
- --- /dev/null
- +++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
- @@ -0,0 +1,43 @@
- +// Definitions for JustBoom DAC
- +/dts-v1/;
- +/plugin/;
- +
- +/ {
- + compatible = "brcm,bcm2708";
- +
- + fragment@0 {
- + target = <&i2s>;
- + __overlay__ {
- + status = "okay";
- + };
- + };
- +
- + fragment@1 {
- + target = <&i2c1>;
- + __overlay__ {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + status = "okay";
- +
- + pcm5122@4d {
- + #sound-dai-cells = <0>;
- + compatible = "ti,pcm5122";
- + reg = <0x4d>;
- + status = "okay";
- + };
- + };
- + };
- +
- + fragment@2 {
- + target = <&sound>;
- + frag2: __overlay__ {
- + compatible = "justboom,justboom-dac";
- + i2s-controller = <&i2s>;
- + status = "okay";
- + };
- + };
- +
- + __overrides__ {
- + 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
- + };
- +};
- --- /dev/null
- +++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
- @@ -0,0 +1,39 @@
- +// Definitions for JustBoom Digi
- +/dts-v1/;
- +/plugin/;
- +
- +/ {
- + compatible = "brcm,bcm2708";
- +
- + fragment@0 {
- + target = <&i2s>;
- + __overlay__ {
- + status = "okay";
- + };
- + };
- +
- + fragment@1 {
- + target = <&i2c1>;
- + __overlay__ {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + status = "okay";
- +
- + wm8804@3b {
- + #sound-dai-cells = <0>;
- + compatible = "wlf,wm8804";
- + reg = <0x3b>;
- + status = "okay";
- + };
- + };
- + };
- +
- + fragment@2 {
- + target = <&sound>;
- + __overlay__ {
- + compatible = "justboom,justboom-digi";
- + i2s-controller = <&i2s>;
- + status = "okay";
- + };
- + };
- +};
- --- a/arch/arm/configs/bcm2709_defconfig
- +++ b/arch/arm/configs/bcm2709_defconfig
- @@ -861,8 +861,8 @@ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
- CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
- CONFIG_SND_BCM2708_SOC_RPI_DAC=m
- CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
- -CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC=m
- -CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI=m
- +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
- +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
- CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
- CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
- CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
- --- a/arch/arm/configs/bcmrpi_defconfig
- +++ b/arch/arm/configs/bcmrpi_defconfig
- @@ -853,8 +853,8 @@ CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
- CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
- CONFIG_SND_BCM2708_SOC_RPI_DAC=m
- CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
- -CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC=m
- -CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI=m
- +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m
- +CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
- CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
- CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
- CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
- --- a/sound/soc/bcm/Kconfig
- +++ b/sound/soc/bcm/Kconfig
- @@ -50,19 +50,19 @@ config SND_BCM2708_SOC_RPI_PROTO
- help
- Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731).
-
- -config SND_BCM2708_SOC_BOOMBERRY_DAC
- - tristate "Support for BoomBerry DAC"
- +config SND_BCM2708_SOC_JUSTBOOM_DAC
- + tristate "Support for JustBoom DAC"
- depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
- select SND_SOC_PCM512x
- help
- - Say Y or M if you want to add support for BoomBerry DAC.
- + Say Y or M if you want to add support for JustBoom DAC.
-
- -config SND_BCM2708_SOC_BOOMBERRY_DIGI
- - tristate "Support for BoomBerry Digi"
- +config SND_BCM2708_SOC_JUSTBOOM_DIGI
- + tristate "Support for JustBoom Digi"
- depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
- select SND_SOC_WM8804
- help
- - Say Y or M if you want to add support for BoomBerry Digi.
- + Say Y or M if you want to add support for JustBoom Digi.
-
- config SND_BCM2708_SOC_IQAUDIO_DAC
- tristate "Support for IQaudIO-DAC"
- --- a/sound/soc/bcm/Makefile
- +++ b/sound/soc/bcm/Makefile
- @@ -9,8 +9,8 @@ snd-soc-hifiberry-dac-objs := hifiberry_
- snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
- snd-soc-hifiberry-digi-objs := hifiberry_digi.o
- snd-soc-hifiberry-amp-objs := hifiberry_amp.o
- -snd-soc-boomberry-dac-objs := boomberry-dac.o
- -snd-soc-boomberry-digi-objs := boomberry-digi.o
- +snd-soc-justboom-dac-objs := justboom-dac.o
- +snd-soc-justboom-digi-objs := justboom-digi.o
- snd-soc-rpi-dac-objs := rpi-dac.o
- snd-soc-rpi-proto-objs := rpi-proto.o
- snd-soc-iqaudio-dac-objs := iqaudio-dac.o
- @@ -22,8 +22,8 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_D
- obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
- obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
- obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
- -obj-$(CONFIG_SND_BCM2708_SOC_BOOMBERRY_DAC) += snd-soc-boomberry-dac.o
- -obj-$(CONFIG_SND_BCM2708_SOC_BOOMBERRY_DIGI) += snd-soc-boomberry-digi.o
- +obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC) += snd-soc-justboom-dac.o
- +obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI) += snd-soc-justboom-digi.o
- obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
- obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
- obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
- --- a/sound/soc/bcm/boomberry-dac.c
- +++ /dev/null
- @@ -1,162 +0,0 @@
- -/*
- - * ASoC Driver for BoomBerry DAC Raspberry Pi HAT Sound Card
- - *
- - * Author: Milan Neskovic
- - * Copyright 2016
- - * based on code by Daniel Matuschek <info@crazy-audio.com>
- - * based on code by Florian Meier <florian.meier@koalo.de>
- - *
- - * This program is free software; you can redistribute it and/or
- - * modify it under the terms of the GNU General Public License
- - * version 2 as published by the Free Software Foundation.
- - *
- - * 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.
- - */
- -
- -#include <linux/module.h>
- -#include <linux/platform_device.h>
- -
- -#include <sound/core.h>
- -#include <sound/pcm.h>
- -#include <sound/pcm_params.h>
- -#include <sound/soc.h>
- -#include <sound/jack.h>
- -
- -#include "../codecs/pcm512x.h"
- -
- -static bool digital_gain_0db_limit = true;
- -
- -static int snd_rpi_boomberry_dac_init(struct snd_soc_pcm_runtime *rtd)
- -{
- - struct snd_soc_codec *codec = rtd->codec;
- - snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08);
- - snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0xf, 0x02);
- - snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
- -
- - if (digital_gain_0db_limit)
- - {
- - int ret;
- - struct snd_soc_card *card = rtd->card;
- -
- - ret = snd_soc_limit_volume(card, "Digital Playback Volume", 207);
- - if (ret < 0)
- - dev_warn(card->dev, "Failed to set volume limit: %d\n", ret);
- - }
- -
- - return 0;
- -}
- -
- -static int snd_rpi_boomberry_dac_hw_params(struct snd_pcm_substream *substream,
- - struct snd_pcm_hw_params *params)
- -{
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
- - /*return snd_soc_dai_set_bclk_ratio(cpu_dai, 64);*/
- - unsigned int sample_bits =
- - snd_pcm_format_physical_width(params_format(params));
- - return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2);
- -}
- -
- -static int snd_rpi_boomberry_dac_startup(struct snd_pcm_substream *substream) {
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_codec *codec = rtd->codec;
- - snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
- - return 0;
- -}
- -
- -static void snd_rpi_boomberry_dac_shutdown(struct snd_pcm_substream *substream) {
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_codec *codec = rtd->codec;
- - snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00);
- -}
- -
- -/* machine stream operations */
- -static struct snd_soc_ops snd_rpi_boomberry_dac_ops = {
- - .hw_params = snd_rpi_boomberry_dac_hw_params,
- - .startup = snd_rpi_boomberry_dac_startup,
- - .shutdown = snd_rpi_boomberry_dac_shutdown,
- -};
- -
- -static struct snd_soc_dai_link snd_rpi_boomberry_dac_dai[] = {
- -{
- - .name = "BoomBerry DAC",
- - .stream_name = "BoomBerry DAC HiFi",
- - .cpu_dai_name = "bcm2708-i2s.0",
- - .codec_dai_name = "pcm512x-hifi",
- - .platform_name = "bcm2708-i2s.0",
- - .codec_name = "pcm512x.1-004d",
- - .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- - SND_SOC_DAIFMT_CBS_CFS,
- - .ops = &snd_rpi_boomberry_dac_ops,
- - .init = snd_rpi_boomberry_dac_init,
- -},
- -};
- -
- -/* audio machine driver */
- -static struct snd_soc_card snd_rpi_boomberry_dac = {
- - .name = "snd_rpi_boomberry_dac",
- - .owner = THIS_MODULE,
- - .dai_link = snd_rpi_boomberry_dac_dai,
- - .num_links = ARRAY_SIZE(snd_rpi_boomberry_dac_dai),
- -};
- -
- -static int snd_rpi_boomberry_dac_probe(struct platform_device *pdev)
- -{
- - int ret = 0;
- -
- - snd_rpi_boomberry_dac.dev = &pdev->dev;
- -
- - if (pdev->dev.of_node) {
- - struct device_node *i2s_node;
- - struct snd_soc_dai_link *dai = &snd_rpi_boomberry_dac_dai[0];
- - i2s_node = of_parse_phandle(pdev->dev.of_node,
- - "i2s-controller", 0);
- -
- - if (i2s_node) {
- - dai->cpu_dai_name = NULL;
- - dai->cpu_of_node = i2s_node;
- - dai->platform_name = NULL;
- - dai->platform_of_node = i2s_node;
- - }
- -
- - digital_gain_0db_limit = !of_property_read_bool(
- - pdev->dev.of_node, "boomberry,24db_digital_gain");
- - }
- -
- - ret = snd_soc_register_card(&snd_rpi_boomberry_dac);
- - if (ret)
- - dev_err(&pdev->dev,
- - "snd_soc_register_card() failed: %d\n", ret);
- -
- - return ret;
- -}
- -
- -static int snd_rpi_boomberry_dac_remove(struct platform_device *pdev)
- -{
- - return snd_soc_unregister_card(&snd_rpi_boomberry_dac);
- -}
- -
- -static const struct of_device_id snd_rpi_boomberry_dac_of_match[] = {
- - { .compatible = "boomberry,boomberry-dac", },
- - {},
- -};
- -MODULE_DEVICE_TABLE(of, snd_rpi_boomberry_dac_of_match);
- -
- -static struct platform_driver snd_rpi_boomberry_dac_driver = {
- - .driver = {
- - .name = "snd-rpi-boomberry-dac",
- - .owner = THIS_MODULE,
- - .of_match_table = snd_rpi_boomberry_dac_of_match,
- - },
- - .probe = snd_rpi_boomberry_dac_probe,
- - .remove = snd_rpi_boomberry_dac_remove,
- -};
- -
- -module_platform_driver(snd_rpi_boomberry_dac_driver);
- -
- -MODULE_AUTHOR("Milan Neskovic <info@boomberry.co>");
- -MODULE_DESCRIPTION("ASoC Driver for BoomBerry PI DAC HAT Sound Card");
- -MODULE_LICENSE("GPL v2");
- --- a/sound/soc/bcm/boomberry-digi.c
- +++ /dev/null
- @@ -1,215 +0,0 @@
- -/*
- - * ASoC Driver for BoomBerry Raspberry Pi Digi HAT Sound Card
- - *
- - * Author: Milan Neskovic
- - * Copyright 2016
- - * based on code by Daniel Matuschek <info@crazy-audio.com>
- - * based on code by Florian Meier <florian.meier@koalo.de>
- - *
- - * This program is free software; you can redistribute it and/or
- - * modify it under the terms of the GNU General Public License
- - * version 2 as published by the Free Software Foundation.
- - *
- - * 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.
- - */
- -
- -#include <linux/module.h>
- -#include <linux/platform_device.h>
- -
- -#include <sound/core.h>
- -#include <sound/pcm.h>
- -#include <sound/pcm_params.h>
- -#include <sound/soc.h>
- -#include <sound/jack.h>
- -
- -#include "../codecs/wm8804.h"
- -
- -static int snd_rpi_boomberry_digi_init(struct snd_soc_pcm_runtime *rtd)
- -{
- - struct snd_soc_codec *codec = rtd->codec;
- -
- - /* enable TX output */
- - snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
- -
- - return 0;
- -}
- -
- -static int snd_rpi_boomberry_digi_startup(struct snd_pcm_substream *substream) {
- - /* turn on digital output */
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_codec *codec = rtd->codec;
- - snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x00);
- - return 0;
- -}
- -
- -static void snd_rpi_boomberry_digi_shutdown(struct snd_pcm_substream *substream) {
- - /* turn off output */
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_codec *codec = rtd->codec;
- - snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x3c);
- -}
- -
- -static int snd_rpi_boomberry_digi_hw_params(struct snd_pcm_substream *substream,
- - struct snd_pcm_hw_params *params)
- -{
- - struct snd_soc_pcm_runtime *rtd = substream->private_data;
- - struct snd_soc_dai *codec_dai = rtd->codec_dai;
- - struct snd_soc_codec *codec = rtd->codec;
- - struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
- -
- - int sysclk = 27000000; /* This is fixed on this board */
- -
- - long mclk_freq=0;
- - int mclk_div=1;
- - int sampling_freq=1;
- -
- - int ret;
- -
- - int samplerate = params_rate(params);
- -
- - if (samplerate<=96000) {
- - mclk_freq=samplerate*256;
- - mclk_div=WM8804_MCLKDIV_256FS;
- - } else {
- - mclk_freq=samplerate*128;
- - mclk_div=WM8804_MCLKDIV_128FS;
- - }
- -
- - switch (samplerate) {
- - case 32000:
- - sampling_freq=0x03;
- - break;
- - case 44100:
- - sampling_freq=0x00;
- - break;
- - case 48000:
- - sampling_freq=0x02;
- - break;
- - case 88200:
- - sampling_freq=0x08;
- - break;
- - case 96000:
- - sampling_freq=0x0a;
- - break;
- - case 176400:
- - sampling_freq=0x0c;
- - break;
- - case 192000:
- - sampling_freq=0x0e;
- - break;
- - default:
- - dev_err(codec->dev,
- - "Failed to set WM8804 SYSCLK, unsupported samplerate %d\n",
- - samplerate);
- - }
- -
- - snd_soc_dai_set_clkdiv(codec_dai, WM8804_MCLK_DIV, mclk_div);
- - snd_soc_dai_set_pll(codec_dai, 0, 0, sysclk, mclk_freq);
- -
- - ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL,
- - sysclk, SND_SOC_CLOCK_OUT);
- - if (ret < 0) {
- - dev_err(codec->dev,
- - "Failed to set WM8804 SYSCLK: %d\n", ret);
- - return ret;
- - }
- -
- - /* Enable TX output */
- - snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
- -
- - /* Power on */
- - snd_soc_update_bits(codec, WM8804_PWRDN, 0x9, 0);
- -
- - /* set sampling frequency status bits */
- - snd_soc_update_bits(codec, WM8804_SPDTX4, 0x0f, sampling_freq);
- -
- - return snd_soc_dai_set_bclk_ratio(cpu_dai,64);
- -}
- -
- -/* machine stream operations */
- -static struct snd_soc_ops snd_rpi_boomberry_digi_ops = {
- - .hw_params = snd_rpi_boomberry_digi_hw_params,
- - .startup = snd_rpi_boomberry_digi_startup,
- - .shutdown = snd_rpi_boomberry_digi_shutdown,
- -};
- -
- -static struct snd_soc_dai_link snd_rpi_boomberry_digi_dai[] = {
- -{
- - .name = "BoomBerry Digi",
- - .stream_name = "BoomBerry Digi HiFi",
- - .cpu_dai_name = "bcm2708-i2s.0",
- - .codec_dai_name = "wm8804-spdif",
- - .platform_name = "bcm2708-i2s.0",
- - .codec_name = "wm8804.1-003b",
- - .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- - SND_SOC_DAIFMT_CBM_CFM,
- - .ops = &snd_rpi_boomberry_digi_ops,
- - .init = snd_rpi_boomberry_digi_init,
- -},
- -};
- -
- -/* audio machine driver */
- -static struct snd_soc_card snd_rpi_boomberry_digi = {
- - .name = "snd_rpi_boomberry_digi",
- - .owner = THIS_MODULE,
- - .dai_link = snd_rpi_boomberry_digi_dai,
- - .num_links = ARRAY_SIZE(snd_rpi_boomberry_digi_dai),
- -};
- -
- -static int snd_rpi_boomberry_digi_probe(struct platform_device *pdev)
- -{
- - int ret = 0;
- -
- - snd_rpi_boomberry_digi.dev = &pdev->dev;
- -
- - if (pdev->dev.of_node) {
- - struct device_node *i2s_node;
- - struct snd_soc_dai_link *dai = &snd_rpi_boomberry_digi_dai[0];
- - i2s_node = of_parse_phandle(pdev->dev.of_node,
- - "i2s-controller", 0);
- -
- - if (i2s_node) {
- - dai->cpu_dai_name = NULL;
- - dai->cpu_of_node = i2s_node;
- - dai->platform_name = NULL;
- - dai->platform_of_node = i2s_node;
- - }
- - }
- -
- - ret = snd_soc_register_card(&snd_rpi_boomberry_digi);
- - if (ret)
- - dev_err(&pdev->dev,
- - "snd_soc_register_card() failed: %d\n", ret);
- -
- - return ret;
- -}
- -
- -static int snd_rpi_boomberry_digi_remove(struct platform_device *pdev)
- -{
- - return snd_soc_unregister_card(&snd_rpi_boomberry_digi);
- -}
- -
- -static const struct of_device_id snd_rpi_boomberry_digi_of_match[] = {
- - { .compatible = "boomberry,boomberry-digi", },
- - {},
- -};
- -MODULE_DEVICE_TABLE(of, snd_rpi_boomberry_digi_of_match);
- -
- -static struct platform_driver snd_rpi_boomberry_digi_driver = {
- - .driver = {
- - .name = "snd-rpi-boomberry-digi",
- - .owner = THIS_MODULE,
- - .of_match_table = snd_rpi_boomberry_digi_of_match,
- - },
- - .probe = snd_rpi_boomberry_digi_probe,
- - .remove = snd_rpi_boomberry_digi_remove,
- -};
- -
- -module_platform_driver(snd_rpi_boomberry_digi_driver);
- -
- -MODULE_AUTHOR("Milan Neskovic <info@boomberry.co>");
- -MODULE_DESCRIPTION("ASoC Driver for BoomBerry PI Digi HAT Sound Card");
- -MODULE_LICENSE("GPL v2");
- --- /dev/null
- +++ b/sound/soc/bcm/justboom-dac.c
- @@ -0,0 +1,162 @@
- +/*
- + * ASoC Driver for JustBoom DAC Raspberry Pi HAT Sound Card
- + *
- + * Author: Milan Neskovic
- + * Copyright 2016
- + * based on code by Daniel Matuschek <info@crazy-audio.com>
- + * based on code by Florian Meier <florian.meier@koalo.de>
- + *
- + * This program is free software; you can redistribute it and/or
- + * modify it under the terms of the GNU General Public License
- + * version 2 as published by the Free Software Foundation.
- + *
- + * 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.
- + */
- +
- +#include <linux/module.h>
- +#include <linux/platform_device.h>
- +
- +#include <sound/core.h>
- +#include <sound/pcm.h>
- +#include <sound/pcm_params.h>
- +#include <sound/soc.h>
- +#include <sound/jack.h>
- +
- +#include "../codecs/pcm512x.h"
- +
- +static bool digital_gain_0db_limit = true;
- +
- +static int snd_rpi_justboom_dac_init(struct snd_soc_pcm_runtime *rtd)
- +{
- + struct snd_soc_codec *codec = rtd->codec;
- + snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08);
- + snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0xf, 0x02);
- + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
- +
- + if (digital_gain_0db_limit)
- + {
- + int ret;
- + struct snd_soc_card *card = rtd->card;
- +
- + ret = snd_soc_limit_volume(card, "Digital Playback Volume", 207);
- + if (ret < 0)
- + dev_warn(card->dev, "Failed to set volume limit: %d\n", ret);
- + }
- +
- + return 0;
- +}
- +
- +static int snd_rpi_justboom_dac_hw_params(struct snd_pcm_substream *substream,
- + struct snd_pcm_hw_params *params)
- +{
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
- + /*return snd_soc_dai_set_bclk_ratio(cpu_dai, 64);*/
- + unsigned int sample_bits =
- + snd_pcm_format_physical_width(params_format(params));
- + return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2);
- +}
- +
- +static int snd_rpi_justboom_dac_startup(struct snd_pcm_substream *substream) {
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_codec *codec = rtd->codec;
- + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
- + return 0;
- +}
- +
- +static void snd_rpi_justboom_dac_shutdown(struct snd_pcm_substream *substream) {
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_codec *codec = rtd->codec;
- + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00);
- +}
- +
- +/* machine stream operations */
- +static struct snd_soc_ops snd_rpi_justboom_dac_ops = {
- + .hw_params = snd_rpi_justboom_dac_hw_params,
- + .startup = snd_rpi_justboom_dac_startup,
- + .shutdown = snd_rpi_justboom_dac_shutdown,
- +};
- +
- +static struct snd_soc_dai_link snd_rpi_justboom_dac_dai[] = {
- +{
- + .name = "JustBoom DAC",
- + .stream_name = "JustBoom DAC HiFi",
- + .cpu_dai_name = "bcm2708-i2s.0",
- + .codec_dai_name = "pcm512x-hifi",
- + .platform_name = "bcm2708-i2s.0",
- + .codec_name = "pcm512x.1-004d",
- + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- + SND_SOC_DAIFMT_CBS_CFS,
- + .ops = &snd_rpi_justboom_dac_ops,
- + .init = snd_rpi_justboom_dac_init,
- +},
- +};
- +
- +/* audio machine driver */
- +static struct snd_soc_card snd_rpi_justboom_dac = {
- + .name = "snd_rpi_justboom_dac",
- + .owner = THIS_MODULE,
- + .dai_link = snd_rpi_justboom_dac_dai,
- + .num_links = ARRAY_SIZE(snd_rpi_justboom_dac_dai),
- +};
- +
- +static int snd_rpi_justboom_dac_probe(struct platform_device *pdev)
- +{
- + int ret = 0;
- +
- + snd_rpi_justboom_dac.dev = &pdev->dev;
- +
- + if (pdev->dev.of_node) {
- + struct device_node *i2s_node;
- + struct snd_soc_dai_link *dai = &snd_rpi_justboom_dac_dai[0];
- + i2s_node = of_parse_phandle(pdev->dev.of_node,
- + "i2s-controller", 0);
- +
- + if (i2s_node) {
- + dai->cpu_dai_name = NULL;
- + dai->cpu_of_node = i2s_node;
- + dai->platform_name = NULL;
- + dai->platform_of_node = i2s_node;
- + }
- +
- + digital_gain_0db_limit = !of_property_read_bool(
- + pdev->dev.of_node, "justboom,24db_digital_gain");
- + }
- +
- + ret = snd_soc_register_card(&snd_rpi_justboom_dac);
- + if (ret)
- + dev_err(&pdev->dev,
- + "snd_soc_register_card() failed: %d\n", ret);
- +
- + return ret;
- +}
- +
- +static int snd_rpi_justboom_dac_remove(struct platform_device *pdev)
- +{
- + return snd_soc_unregister_card(&snd_rpi_justboom_dac);
- +}
- +
- +static const struct of_device_id snd_rpi_justboom_dac_of_match[] = {
- + { .compatible = "justboom,justboom-dac", },
- + {},
- +};
- +MODULE_DEVICE_TABLE(of, snd_rpi_justboom_dac_of_match);
- +
- +static struct platform_driver snd_rpi_justboom_dac_driver = {
- + .driver = {
- + .name = "snd-rpi-justboom-dac",
- + .owner = THIS_MODULE,
- + .of_match_table = snd_rpi_justboom_dac_of_match,
- + },
- + .probe = snd_rpi_justboom_dac_probe,
- + .remove = snd_rpi_justboom_dac_remove,
- +};
- +
- +module_platform_driver(snd_rpi_justboom_dac_driver);
- +
- +MODULE_AUTHOR("Milan Neskovic <info@justboom.co>");
- +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI DAC HAT Sound Card");
- +MODULE_LICENSE("GPL v2");
- --- /dev/null
- +++ b/sound/soc/bcm/justboom-digi.c
- @@ -0,0 +1,215 @@
- +/*
- + * ASoC Driver for JustBoom Raspberry Pi Digi HAT Sound Card
- + *
- + * Author: Milan Neskovic
- + * Copyright 2016
- + * based on code by Daniel Matuschek <info@crazy-audio.com>
- + * based on code by Florian Meier <florian.meier@koalo.de>
- + *
- + * This program is free software; you can redistribute it and/or
- + * modify it under the terms of the GNU General Public License
- + * version 2 as published by the Free Software Foundation.
- + *
- + * 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.
- + */
- +
- +#include <linux/module.h>
- +#include <linux/platform_device.h>
- +
- +#include <sound/core.h>
- +#include <sound/pcm.h>
- +#include <sound/pcm_params.h>
- +#include <sound/soc.h>
- +#include <sound/jack.h>
- +
- +#include "../codecs/wm8804.h"
- +
- +static int snd_rpi_justboom_digi_init(struct snd_soc_pcm_runtime *rtd)
- +{
- + struct snd_soc_codec *codec = rtd->codec;
- +
- + /* enable TX output */
- + snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
- +
- + return 0;
- +}
- +
- +static int snd_rpi_justboom_digi_startup(struct snd_pcm_substream *substream) {
- + /* turn on digital output */
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_codec *codec = rtd->codec;
- + snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x00);
- + return 0;
- +}
- +
- +static void snd_rpi_justboom_digi_shutdown(struct snd_pcm_substream *substream) {
- + /* turn off output */
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_codec *codec = rtd->codec;
- + snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x3c);
- +}
- +
- +static int snd_rpi_justboom_digi_hw_params(struct snd_pcm_substream *substream,
- + struct snd_pcm_hw_params *params)
- +{
- + struct snd_soc_pcm_runtime *rtd = substream->private_data;
- + struct snd_soc_dai *codec_dai = rtd->codec_dai;
- + struct snd_soc_codec *codec = rtd->codec;
- + struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
- +
- + int sysclk = 27000000; /* This is fixed on this board */
- +
- + long mclk_freq=0;
- + int mclk_div=1;
- + int sampling_freq=1;
- +
- + int ret;
- +
- + int samplerate = params_rate(params);
- +
- + if (samplerate<=96000) {
- + mclk_freq=samplerate*256;
- + mclk_div=WM8804_MCLKDIV_256FS;
- + } else {
- + mclk_freq=samplerate*128;
- + mclk_div=WM8804_MCLKDIV_128FS;
- + }
- +
- + switch (samplerate) {
- + case 32000:
- + sampling_freq=0x03;
- + break;
- + case 44100:
- + sampling_freq=0x00;
- + break;
- + case 48000:
- + sampling_freq=0x02;
- + break;
- + case 88200:
- + sampling_freq=0x08;
- + break;
- + case 96000:
- + sampling_freq=0x0a;
- + break;
- + case 176400:
- + sampling_freq=0x0c;
- + break;
- + case 192000:
- + sampling_freq=0x0e;
- + break;
- + default:
- + dev_err(codec->dev,
- + "Failed to set WM8804 SYSCLK, unsupported samplerate %d\n",
- + samplerate);
- + }
- +
- + snd_soc_dai_set_clkdiv(codec_dai, WM8804_MCLK_DIV, mclk_div);
- + snd_soc_dai_set_pll(codec_dai, 0, 0, sysclk, mclk_freq);
- +
- + ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL,
- + sysclk, SND_SOC_CLOCK_OUT);
- + if (ret < 0) {
- + dev_err(codec->dev,
- + "Failed to set WM8804 SYSCLK: %d\n", ret);
- + return ret;
- + }
- +
- + /* Enable TX output */
- + snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
- +
- + /* Power on */
- + snd_soc_update_bits(codec, WM8804_PWRDN, 0x9, 0);
- +
- + /* set sampling frequency status bits */
- + snd_soc_update_bits(codec, WM8804_SPDTX4, 0x0f, sampling_freq);
- +
- + return snd_soc_dai_set_bclk_ratio(cpu_dai,64);
- +}
- +
- +/* machine stream operations */
- +static struct snd_soc_ops snd_rpi_justboom_digi_ops = {
- + .hw_params = snd_rpi_justboom_digi_hw_params,
- + .startup = snd_rpi_justboom_digi_startup,
- + .shutdown = snd_rpi_justboom_digi_shutdown,
- +};
- +
- +static struct snd_soc_dai_link snd_rpi_justboom_digi_dai[] = {
- +{
- + .name = "JustBoom Digi",
- + .stream_name = "JustBoom Digi HiFi",
- + .cpu_dai_name = "bcm2708-i2s.0",
- + .codec_dai_name = "wm8804-spdif",
- + .platform_name = "bcm2708-i2s.0",
- + .codec_name = "wm8804.1-003b",
- + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- + SND_SOC_DAIFMT_CBM_CFM,
- + .ops = &snd_rpi_justboom_digi_ops,
- + .init = snd_rpi_justboom_digi_init,
- +},
- +};
- +
- +/* audio machine driver */
- +static struct snd_soc_card snd_rpi_justboom_digi = {
- + .name = "snd_rpi_justboom_digi",
- + .owner = THIS_MODULE,
- + .dai_link = snd_rpi_justboom_digi_dai,
- + .num_links = ARRAY_SIZE(snd_rpi_justboom_digi_dai),
- +};
- +
- +static int snd_rpi_justboom_digi_probe(struct platform_device *pdev)
- +{
- + int ret = 0;
- +
- + snd_rpi_justboom_digi.dev = &pdev->dev;
- +
- + if (pdev->dev.of_node) {
- + struct device_node *i2s_node;
- + struct snd_soc_dai_link *dai = &snd_rpi_justboom_digi_dai[0];
- + i2s_node = of_parse_phandle(pdev->dev.of_node,
- + "i2s-controller", 0);
- +
- + if (i2s_node) {
- + dai->cpu_dai_name = NULL;
- + dai->cpu_of_node = i2s_node;
- + dai->platform_name = NULL;
- + dai->platform_of_node = i2s_node;
- + }
- + }
- +
- + ret = snd_soc_register_card(&snd_rpi_justboom_digi);
- + if (ret)
- + dev_err(&pdev->dev,
- + "snd_soc_register_card() failed: %d\n", ret);
- +
- + return ret;
- +}
- +
- +static int snd_rpi_justboom_digi_remove(struct platform_device *pdev)
- +{
- + return snd_soc_unregister_card(&snd_rpi_justboom_digi);
- +}
- +
- +static const struct of_device_id snd_rpi_justboom_digi_of_match[] = {
- + { .compatible = "justboom,justboom-digi", },
- + {},
- +};
- +MODULE_DEVICE_TABLE(of, snd_rpi_justboom_digi_of_match);
- +
- +static struct platform_driver snd_rpi_justboom_digi_driver = {
- + .driver = {
- + .name = "snd-rpi-justboom-digi",
- + .owner = THIS_MODULE,
- + .of_match_table = snd_rpi_justboom_digi_of_match,
- + },
- + .probe = snd_rpi_justboom_digi_probe,
- + .remove = snd_rpi_justboom_digi_remove,
- +};
- +
- +module_platform_driver(snd_rpi_justboom_digi_driver);
- +
- +MODULE_AUTHOR("Milan Neskovic <info@justboom.co>");
- +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI Digi HAT Sound Card");
- +MODULE_LICENSE("GPL v2");
|