xxx_probe() 호출은 어떻게 되는거죠?

revival의 이미지

S3C6410 CPU 를 사용하는 보드에서 리모콘 기능을 추가하려고 삽질 중입니다.ㅡ.ㅡ;

2.6.21 에 포함되어있던 s3c-sir.c 소스를 2.6.29(6410 보드에 포함된 커널)에 포팅했습니다.
net_device 구조체가 조금 바뀌어서 포팅하면서 삽질을 조금 했죠.
아무튼 포팅을 하긴 했지만, 아직 동작이 안되서 잘되었는지는 미지수...

빌드에 성공해서 커널에 포함시키고, 모듈 init 메시지까지 확인했습니다.
헌데, xxx_probe() 함수가 호출 되지 않네요.
혹시 물리 장치가 연결 되지 않아서 그런건가 하고
UART3(H1: 67,68)쪽에 IrDA 를 만들어 붙여 보았습니다.
그래도 여전히 probe 가 호출 되지 않네요.

혹시 어떤 조권을 맞춰 줘야 xxx_probe() 가 호출 되나요?

UART 3 을 IrDA 용도로 사용한다고, 어디다 설정하는것인 있나요?
아는게 많지 않아서 무한 삽질 루프에 빠졌습니다.
도와주세요.

revival의 이미지

파일을 첨부합니다.

FILE: drivers/net/irda/s3c-sir.c

static int s3c_irda_probe(struct platform_device *pdev)
{
// ... 생략 ...
}
 
// ... 생략 ...
 
static struct platform_driver s3c_irda_driver = {
        .probe          = s3c_irda_probe,
        .remove         = s3c_irda_remove,
        .suspend        = s3c_irda_suspend,
        .resume         = s3c_irda_resume,
	.driver         = {
		.name   = "s3c-irda",
	},
};
 
// ... 생략 ...
 
static int __init s3c_irda_init(void)
{
        printk(banner);
        return platform_driver_register(&s3c_irda_driver);
 
}
댓글 첨부 파일: 
첨부파일 크기
Package icon s3c-sir.zip6.95 KB

----
오늘도 행복한 하루~
@from caesar

revival의 이미지

test1

----
오늘도 행복한 하루~
@from caesar

bushi의 이미지

똑같은 "s3c-irda" 라는 이름을 가진 platform_device 가 platform_device_register() 되면,
platform_bus subsystem 에서 platform_driver.probe() 를 호출합니다.

s3c port 가 말과 글로 표현할 수 없을 정도로 지저분해서 일반론은 들이대기 어렵고...
arch/arm/ 에서 grep 을 이용해서 "s3c-irda"를 찾아보시면 이것저것 줄줄이 사탕처럼 걸려나올 겁니다.

s3c uart 드라이버가 엄한 짓을 하지 않는 지 소스코드를 검토해보셔야하고,
s3c uart 에 대한 platform_device_register() 하는 부분을 찬찬히 살펴서 포트를 제외시켜야하고...

이래저래 적었지만...
lirc 를 사용해서 리모컨을 구현하시는 거라면 옮겨오신 s3c-sir.c 와는 아무 관계 없습니다.

리모컨은 IrDA 가 아니고 CIR 이며, 반송파등의 물리적인 특성뿐만 아니라 프로토콜도 틀립니다.
lirc 를 이용한 리모콘 송신(Tx)기 역할은 간단한 GPIO 조작으로 쉽게 가능합니다.

수신(Rx)이 좀 괴로운데... lirc 에 포함된 드라이버들을 이것저것 들여다 보시는 게 이해가 빠르실 겁니다.
h/w CIR 이 없다면...
인터럽트 타이밍을 분석한다던가해서 억지로 CIR 프로토콜에 끼워 맞춰서 신호를 재해석하는 수 밖에 없습니다.
코드화가 불가능하다면 재현가능한 형태로 타이밍정보만 저장해서 써먹습니다.
(어떻게 하든 간에... 결국은 '학습'을 시키는 거죠.)

OTL

revival의 이미지

친절한 답변 감사합니다.

헌데 설명이 조금 이상한 부분이 있네요.

Quote:
똑같은 "s3c-irda" 라는 이름을 가진 platform_device 가 platform_device_register() 되면, platform_bus subsystem 에서 platform_driver.probe() 를 호출합니다.

__init() 함수에서 platform_driver_register(&s3c_irda_driver) 를 등록하고 있는데요.
그럼 이 즉시 호출이 되어야 하지 않나요?

제가 말을 잘못 이해하고 있는듯 하네요.
----
오늘도 행복한 하루~
@from caesar

----
오늘도 행복한 하루~
@from caesar

bushi의 이미지

device 와 driver 에 대해 이해하실 필요까진 없을 것 같은데...
뭘 이해 못하셨는지 저도 모르겠습니다.

OTL

revival의 이미지

님의 말은 s3c-sir.c 를 포팅해서 동작해봐야.
IrDA 즉 데이터 통신만 되지 CIR 로 사용하는데는 무의미 하다는 의미인거죠?

lirc 언급을 하셨는데
GPIO 를 통해서 리모콘 송수신(rx/tx)을 할 수 있나요?
만약 그렇게 구현 하려면 s3c-sir.c 를 lirc 용으로 고쳐야 하나요? 아니면 아에 새로 구현 해야 되나요?

여러가지로 질문이 많네요.ㅎㅎ
언제 밥이라도 한끼 사드려야겠네요.ㅋㅋ

----
오늘도 행복한 하루~
@from caesar

----
오늘도 행복한 하루~
@from caesar

bushi의 이미지

질문을 하기 전에 잠시라도 좋으니 lirc 를 먼저 보셨으면 좋겠습니다.

OTL

revival의 이미지

arm 용으로 cross-compile 하여 올려도 봤어요.
serial driver 를 올려서 동작테스트를 해봤는데, 문제가 있어서 중도에 포기했죠.

iMon mini device 를 구입해서
그걸 올려서도 테스트해보고
lirc_imon.c 소스도 대략 훓어봤구요.
여차하면 이놈이라도 붙여서 써볼요량으로.
근데, 전용 리모콘만 지원을 하더라구요.
decoder 가 H/W 적으로 내장되어 다른 리모콘 신호는 무시하더군요..OMG

----
오늘도 행복한 하루~
@from caesar

----
오늘도 행복한 하루~
@from caesar

harisoo의 이미지

커널로그로 확인시 출력이 안된거라면 현재 소스상 S3C_IRDA_DEBUG가 define이 안되서
probe()함수에서 DBG()출력이 안된것 같습니다.
이미 드라이버가 커널에 register되지 않았다면 platform_driver_register()호출 즉시 probe()함수가 호출됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.