sec2
2017年1月21日 16時31分
はじめまして、エスイーシーの佐藤と申します。
よろしくお願い致します。
現在、Armadillo-810にコーデックCS4270を搭載した拡張ボードを、CON5で接続する事で
Armadillo-840と同様なサウンド処理ができる事を目指しています。
(なお、Armadillo-840では、CS4270を使用して正常に動作できました。)
下記の情報を参考にして作業していましたが、サウンドデバイスが認識されずに行き
詰ってしまいました。。。
お手数ですが、アドバイスを頂けないでしょうか?
<参考情報>
・Armadillo-810でオーディオコーデックICの使用
https://armadillo.atmark-techno.com/forum/armadillo/2070
・サウンドコーデック変更に必要な作業
https://armadillo.atmark-techno.com/forum/armadillo/587
<環境>
ハードウェア: Armadillo-810 + 自作拡張ボード(CON5接続)
ATDE5 : atde5-i386-20150518
Userland: atmark-dist-20140602
Kernel: linux-3.4-at10
<状況>
・起動時ログ(CS4270自体は認識しているが、サウンドデバイスとして認識していない)
:
cs4270: 3300 mV
:
cs4270 2-004a: found device at i2c address 4A
cs4270 2-004a: hardware revision 3
:
ALSA device list:
No soundcards found. ←認識していない
・起動後のi2cdetectコマンド結果(CS4270のアドレス 0x4aの位置がUUで期待通り)
# i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: UU UU UU UU UU UU UU UU -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
・/dev/snd配下にtimerしかない(ファイル不足)
正常にサウンドデバイスが認識されると、他にもcontrolC0 controlC1 pcmC0D0p pcmC1D0c pcmC1D0p
などが作成されると推測しています。(Armadillo-840時より)
・下記ファイル内のcs4270_probe()がコールされない (コール不足)
linux-3.4-at10/sound/soc/codecs/cs4270.c
なお、同ファイル内のcs4270_i2c_probe()はコールされている。
<推測>
cs4270_probe()がコールされて処理が進めば、以下の様な起動時ログが表示されて
サウンドカードが認識されると推測しております。
(下記のログは、Armadillo-840時の起動ログです。)
:
asoc: cs4270-hifi <-> fsia-dai mapping ok
:
ALSA device list:
#0: FSI2B-HDMI
#1: FSI2A-CS4270
:
他に何か必要な情報がありましたら、教えて頂けると助かります。
以上です。
コメント
sec2
エスイーシーの佐藤です。
自己解決しました。
下記の様に修正することで、正常に認識させる事ができました。
(Armadillo-840→Armadillo-810変更に伴い、I2C-0→I2C-2となっている事がポイントでした。)
static struct asoc_simple_card_info __maybe_unused fsi_cs4270_info = {
.name = "cs4270",
.card = "FSI2A-CS4270",
.cpu_dai = "fsia-dai",
// .codec = "cs4270.0-004a",
.codec = "cs4270.2-004a",
.platform = "sh_fsi2",
.codec_dai = "cs4270-hifi",
.init = &fsi_cs4270_init_info,
};
static struct regulator_consumer_supply cs4270_supply[] = {
// REGULATOR_SUPPLY("va", "0-004a"),
// REGULATOR_SUPPLY("vd", "0-004a"),
// REGULATOR_SUPPLY("vlc", "0-004a"),
REGULATOR_SUPPLY("va", "2-004a"),
REGULATOR_SUPPLY("vd", "2-004a"),
REGULATOR_SUPPLY("vlc", "2-004a"),
};
ohshimayyyy
お世話になります。
大島と申します。
上記の情報を参考にして、Armadillo-810とCS4270のみで
wavファイルの再生を試しています。
CS4270は認識されましたが
I2Sの信号が出力されず、wavファイルを再生することができません。
お手数をお掛けいたしますが、アドバイスをいただきたく
宜しくお願いいたします。
<環境>
ハードウェア: Armadillo-810 + 下記URLを参考にした回路(CON5接続)
ATDE5 : atde5-amd64-20150612
Userland : atmark-dist-20150618
Kernel : linux-3.4-at14
<修正箇所>
linux-3.4-at14/arch/arm/mach-shmobile
・Kconfig.armadillo800
Armadillo-840を参考に、FSIA_SLAVE、FSIA_SLAVE_DEVICE_CS4270、SND_SOC_CS4270を追加。
FSIA_MASTER*は無効?
SCIFA4、SCIFA5を無効。
・board-armadillo810.c
PORT160をSDA、PORT161をSCLとして、i2c3を構成。
Armadillo-840を参考に、FSI(FSIA、FSIB)を追加。
Armadillo-840を参考に、a810_clock_initを追加。
WM8978は不要のため、無効。
make menuconfogで変更箇所を反映。
<状況>
・起動ログ
CS4270は認識され、サウンドデバイスとして認識しています。
:
cs4270: 3300 mV
:
cs4270 3-004a: found device at i2c address 4A
cs4270 3-004a: hardware revision 3
fsi-pcm-audio sh_fsi2: Runtime PM disabled, clock forced on.
asoc: cs4270-hifi <-> fsia-dai mapping ok
:
ALSA device list:
#0: FSI2A-CS4270
・起動後のi2cdetectコマンド結果
CS4270のアドレス 0x4aの位置がUUで期待通り。
・/dev/snd配下のデバイスファイルの配置
[root@armadillo810-0 (ttySC2) ~]# ls /dev/snd/
controlC0 pcmC0D0c pcmC0D0p timer
・下記ファイル内のcs4270_probe()のコールの状況
linux-3.4-at10/sound/soc/codecs/cs4270.c
コールされているか、確認の仕方が分かりません。。
ALSA device listに該当デバイスが表示されているのでコールされている?
・ALSA(aplayコマンド)の実行
[root@armadillo810-0 (ttySC2) /home/ftp/pub]# amixer -c 0 set Master on 70%
Simple mixer control 'Master',0
Capabilities: pvolume pswitch cswitch
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: Playback 0 - 255
Front Left: Playback 179 [70%] [on] Capture [on]
Front Right: Playback 179 [70%] [on] Capture [on]
実行はできましたが、反映されたのか分かりません。。
[root@armadillo810-0 (ttySC2) /home/ftp/pub]# aplay -Dplug:hw:0 -M -twav /home/ftp/pub/test.wav
Playing WAVE '/home/ftp/pub/test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
実行はできましたが、I2Sの出力ピンにオシロをあてても、信号が出力されていません。
FSIAIBT、FSIAILR、FSIAOSLD、FSIAISLDの全信号を確認。
・回路に記載されていたAUDIO_CLKとは?
Armadillo-810の場合、AUDIO_CLKがどのピンなのか分かりません。。
・wavファイルを再生する信号について
FSIAO*ではなく、FSIAI*でよいのでしょうか?
FSIAO*の場合、カーネルソースの変更の仕方が分かりません。。
ohshimayyyy
sec2
2017年1月21日 16時42分
エスイーシーの佐藤と申します。
> なお、同ファイル内のcs4270_i2c_probe()はコールされている。
本関数コール時の戻り値は0でした。