LINUX.ORG.RU

[alsa] msm7227, драйвера и /dev

 


0

1

Ковыряюсь в звуковой системе телефона LG P500. Пытаюсь поменять настройки усилителя.
Интересно как оно там вообще сделано. Есть 2 набора файлов устройств в /dev:
1) Стандартные ALSA: /dev/snd/controlC0, /dev/snd/pcmC0D0c, /dev/snd/pcmC0D0p и /dev/snd/timer
2) Не вполне понятно что: /dev/msm_pcm_out, /dev/msm_pcm_in, /dev/msm_pcm_ctl
Устройства не являются ссылками, номера устройств разные, т.е. это не совсем одно и то же (или совсем не одно и то же).
Первый набор звуковой системой не используется, все играется через второй.
Собственно вопрос: В чем между ними разница? Является ли второй набор тоже ALSA?
Если нет, то не понятно зачем там ALSA c драйверами...

Судя по тому что удалось нагуглить:

pcm.!default{
        type plug
        slave {
                pcm "file:/dev/msm_pcm_out,raw"
                format S16_LE
                rate 44100
                channels 2
        }
}
второй набор файлов устройств можно использовать как обычные alsa. Интересно, можно ли сделать наоборот...

★★★★★

Последнее исправление: ls-h (всего исправлений: 2)

> Является ли второй набор тоже ALSA?

Далеко не факт. Вполне может быть что они свой драйвер вкорячили, вместо того, чтоб ALSA использовать. Ну а наличие файлов в /dev/ ещё не о чём не говорит - мало ли, может быть они были статически созданы, а вовсе не каким-нибудь udev-ом...

Рекомендую проверить в /proc/devices , ну и пошариться в директории /proc/asound , чтобы посмотреть есть ли звуковые карты, управляемые алсой.

mad_soft
()
Ответ на: комментарий от mad_soft
cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 21 sg
 29 fb
 81 video4linux
 86 ch
 89 i2c
 90 mtd
108 ppp
116 alsa
128 ptm
136 pts
216 rfcomm
245 msm_camera
246 kgsl
247 ttyGS
248 ttyHS
249 dia
250 adsp
251 oncrpc
252 smdpkt
253 smd
254 rtc

Block devices:
  1 ramdisk
259 blkext
  7 loop
  8 sd
 31 mtdblock
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
254 device-mapper
ls -l /proc/asound
dr-xr-xr-x    4 root     root             0 Jan 20 14:01 card0
-r--r--r--    1 root     root             0 Jan 20 14:01 cards
-r--r--r--    1 root     root             0 Jan 20 14:01 devices
lrwxrwxrwx    1 root     root             5 Jan 20 14:01 msmaudio -> card0
-r--r--r--    1 root     root             0 Jan 20 14:01 pcm
-r--r--r--    1 root     root             0 Jan 20 14:01 timers
-r--r--r--    1 root     root             0 Jan 20 14:01 version
cat /proc/asound/cards
 0 [msmaudio       ]: MSM-CARD - msm-audio
                      msm-audio (MSM-CARD)
ls-h ★★★★★
() автор топика
Ответ на: комментарий от mad_soft

А не подскажешь, как узнать какому драйверу принадлежит файл устройства? Чтобы потом найти в исходниках ядра, почитать. По major/minor?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

> А не подскажешь, как узнать какому драйверу принадлежит файл устройства? Чтобы потом найти в исходниках ядра, почитать. По major/minor?

major/minor вообще-то могут выдаваться и динамически, так что искать по ним наверное не очень продуктивно. Я бы сличил major с тем, что есть в /proc/devices (а если major == 10, то тогда надо глянуть minor в /proc/misc), а затем погрепал бы соответствующее имя вкупе с register_chrdev, например... Впрочем, учитывая краткость названий устройств, боюсь это может и не помочь.

Думаю ещё должен быть какой-то способ подглядеть в sysfs (udev же берёт оттуда названия файлов устройств по умолчанию), но, увы, я пока не в курсе, как это можно сделать.

mad_soft
()
Ответ на: комментарий от mad_soft

Спасибо за совет!

cat /proc/misc
 . . .
 53 msm_mp3
 54 msm_preproc_ctl
 55 msm_pcm_in
 56 msm_pcm_ctl
 57 msm_pcm_out
 . . .
Эмм... не очень понял как по этой информации найти соответствующие исходники в исходниках ядра...

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Эмм... не очень понял как по этой информации найти соответствующие исходники в исходниках ядра...

Ну как-то так:

grep -r msm_preproc_ctl /path/to/linux-source

mad_soft
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.