最後の投稿から約5年ですね...
子供が二人になって趣味の作業スペースが縮小中~( ;∀;)
以前のように時間が必要な趣味はできなくなり、
スピーカーとプリメインアンプの組み合わせを楽しむくらいになっちゃってます。
今回はハードオフで購入して長いこと放置していたジャンクなアンプを修理してみました。
オーディオビジュアル、PC、J-POP関係の記事書けたらな~と思います。
最後の投稿から約5年ですね...
子供が二人になって趣味の作業スペースが縮小中~( ;∀;)
以前のように時間が必要な趣味はできなくなり、
スピーカーとプリメインアンプの組み合わせを楽しむくらいになっちゃってます。
今回はハードオフで購入して長いこと放置していたジャンクなアンプを修理してみました。
framebuffer_width=640
framebuffer_height=480
hdmi_group=2
hdmi_mode=4
sudo apt-get -y install xinput evtest
cd
git clone https://github.com/notro/fbtft_tools.git
cd ~/fbtft_tools/ads7846_device; make && sudo make install
sudo modprobe ads7846_device gpio_pendown=4しかし、調整しようと思ったらXY座標が入れ替わってるっぽいので
evtest
sudo modprobe -r ads7846_deviceでモジュールを削除して、 swap_xyの引数を追加して組み込みしなおします。
sudo modprobe -r ads7846
sudo modprobe ads7846_device gpio_pendown=4 swap_xy
if (Rt) {
struct input_dev *input = ts->input;
if (ts->swap_xy)
swap(x, y);
y = (y-4095)*-1;
if (!ts->pendown) {
input_report_key(input, BTN_TOUCH, 1);
ts->pendown = true;
dev_vdbg(&ts->spi->dev, "DOWN\n");
}
input_report_abs(input, ABS_X, x);
input_report_abs(input, ABS_Y, y);
input_report_abs(input, ABS_PRESSURE, ts->pressure_max - Rt);
input_sync(input);
dev_vdbg(&ts->spi->dev, "%4d/%4d/%4d\n", x, y, Rt);
}
evtestを起動している状態で4隅をタップしてXY座標の最小値、最大値をメモします。
sudo modprobe ads7846_device gpio_pendown=4 swap_xy x_min=523 x_max=3822 y_min=451 y_max=3711
sudo tar zxvf jdk-8u6-linux-arm-vfp-hflt.gz -C /opt
/opt/jdk1.8.0_06/bin/java -cp test.jar fx.JavaFXMain
sudo modprobe fbtft_device name=itdb28 fps=15 rotate=90 gpios=reset:13,dc:5,wr:12,cs:6,db00:14,db01:15,db02:17,db03:27,db04:22,db05:23,db06:24,db07:25
fbcp &
#include <linux/gpio.h>
#include <linux/delay.h>
539行目辺り
gpio_request_one(26, GPIOF_OUT_INIT_LOW, "MyTest");
if (sampling_rate == 48000 || sampling_rate == 96000) {
gpio_set_value(26, 0);
} else {
gpio_set_value(26, 1);
}
gpio_free(26);
gpio_request_one(13, GPIOF_OUT_INIT_LOW, "MyTest");
if (sampling_rate == 96000) {
gpio_set_value(13, 1);
} else {
gpio_set_value(13, 0);
}
gpio_free(13);
gpio_request_one(16, GPIOF_OUT_INIT_LOW, "MyTest");
if (data_length == 16) {
gpio_set_value(16, 0);
} else {
gpio_set_value(16, 1);
}
gpio_free(16);
GPIO26をPLL1707のFS1に繋いで44.1kHzか48kHzかを設定。GPIO12をPCM1716のMUTEに繋いでます。struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); uint32_t mask; int myerr; switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: myerr = gpio_request_one(12, GPIOF_OUT_INIT_LOW, "MyTest"); if (myerr == 0) { gpio_set_value(12, 1); gpio_free(12); mdelay(100); } bcm2708_i2s_start_clock(dev); if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) mask = BCM2708_I2S_RXON; else mask = BCM2708_I2S_TXON; regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, mask, mask); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH: myerr = gpio_request_one(12, GPIOF_OUT_INIT_LOW, "MyTest"); if (myerr == 0) { gpio_set_value(12, 0); gpio_free(12); mdelay(100); } bcm2708_i2s_stop(dev, substream, dai); break;
24bitの所がコメントアウトされていたので外しました。しかし、最新のソースコードだと元々上記のようになってますね。static struct snd_soc_dai_driver bcm2708_i2s_dai = { .name = "bcm2708-i2s", .probe = bcm2708_i2s_dai_probe, .playback = { .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_192000, .formats = SNDRV_PCM_FMTBIT_S16_LE // : disable for now, it causes white noise with xbmc | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE }, .capture = { .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_192000, .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE }, .ops = &bcm2708_i2s_dai_ops, .symmetric_rates = 1 };
static struct snd_soc_dai_driver pcm1794a_dai = {
.name = "pcm1794a-hifi",
.playback = {
.channels_min = 2,
.channels_max = 2,
.rates = SNDRV_PCM_RATE_8000_192000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S32_LE
},
};
一応、SNDRV_PCM_FMTBIT_S32_LEを追加。外部クロックを使うように設定しています。static struct snd_soc_dai_link snd_rpi_rpi_dac_dai[] = { { .name = "HifiBerry Mini", .stream_name = "HifiBerry Mini HiFi", .cpu_dai_name = "bcm2708-i2s.0", .codec_dai_name = "pcm1794a-hifi", .platform_name = "bcm2708-i2s.0", .codec_name = "pcm1794a-codec", .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | //SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAIFMT_CBM_CFS, .ops = &snd_rpi_rpi_dac_ops, .init = snd_rpi_rpi_dac_init, }, };
sudo insmod snd-soc-bcm2708-i2s.ko
sudo insmod snd-soc-pcm1794a.ko
sudo insmod snd-soc-rpi-dac.ko