안녕하세요? 요즘 알게 모르게 고도리님의 도움을 많이 받고 있습니다.
감사합니다 ^^
근데 하나 궁금한 것이 있는데요..
요즘 smdk2440 보드를 가지고 이것저것 장난을 좀 치고 있는데..
(linux-2.6.17.11 커널을 smdk2440에 포팅하였구요)
임베디드 공모전 사이트에서 고도리님께서 작성하신 사운드 드라이버 패치를
적용하고 있습니다.
그런데 패치 파일 내용을 보니 궁금한 사항이 조금 있어서요.
첫번째로 궁금한 내용은 사운드 코덱 칩 드라이버가 UDA1341로 되어 있던데요.
smdk2440 보드를 보면 코덱 칩이 sigmatel의 stac9767칩이더라구요.
혹시 작동이 되지 않는 것은 아닌지요?
두번째는 arch/arm/mach-s3c2410/mach-smdk2440.c 파일의 내용에 관한 질문인데요.
59 static struct map_desc smdk2440_iodesc[] __initdata = {
60 /* ISA IO Space map (memory space selected by A24) */
61
62 {
63 .virtual = (u32)S3C24XX_VA_ISA_WORD,
64 .pfn = __phys_to_pfn(S3C2410_CS2),
65 .length = 0x10000,
66 .type = MT_DEVICE,
67 }, {
68 .virtual = (u32)S3C24XX_VA_ISA_WORD + 0x10000,
69 .pfn = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
70 .length = SZ_4M,
71 .type = MT_DEVICE,
72 }, {
73 .virtual = (u32)S3C24XX_VA_ISA_BYTE,
74 .pfn = __phys_to_pfn(S3C2410_CS2),
75 .length = 0x10000,
76 .type = MT_DEVICE,
77 }, {
78 .virtual = (u32)S3C24XX_VA_ISA_BYTE + 0x10000,
79 .pfn = __phys_to_pfn(S3C2410_CS2 + (1<<24)),
80 .length = SZ_4M,
81 .type = MT_DEVICE,
82 }, {
// 여기가 패치에서 추가된 부분이죠
.virtual = (u32)S3C24XX_VA_IIS,
.pfn = __phys_to_pfn(S3C2410_PA_IIS),
.length = SZ_1M,
.type = MT_DEVICE,
}
83 };
이러한 부분의 수정은 어떠한 자료를 참고해서 이루어지는 것인지요?
질문이 대략 당황스러우시겠네요 ^^;
수고스러우시더라도 답변 부탁 드릴께요 ~~
smdk2440의 경우 ac97과 iis를 동시에 지원하게 되어 있는데
점퍼를 가지고 조정할 수 있게 되어 있을겁니다(ac97 mode냐
iis 모드냐). 회로도를 보시면 나와 잇을 듯 하고요.
2440의 ac97 codec은 2.4.20에만 있는 것으로 알고 있고요.
나머지는 모두 iis일겁니다.
aesop에 포팅할때도 uda1341로 hw구조가 되어 있어서 그렇게
맞춘걸로 생각이 되고요.
참, 위와같은 구조는 linux device model이란 좀 복잡한 구조의
커널 드라이버 구조인데(쓰는 입장에서는 복잡 안할지도...ㅎㅎ)
거의 나와 있는 문서가 드뭅니다만
구글서 linux 2.6 driver porting으로 검색해 보시면 lwn.net의
article이 걸립니다(아마도 맨 위). 거기의 기사중 관련 내용이
있습니다. 가장 잘 나와 있는 문서라고 생각하시면 됩니다.
내년에 aesop용으로 나갈 교재 중 한 챕터가 해당 부분인데
제가 80페이지 분량으로 날림 작성한게 있습니다.
적당히 수정한 후 릴리즈 할 예정입니다. 그때 보셔도 될 듯 합니다.