도와주세요!!
글 수 15,339
2003.01.02 13:42:31 (*.205.157.116)
6681
답변 정말 감사합니다.
static struct map_desc wavysound_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash
bank 0 */
{ 0xf0000000, 0x08000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /*
Ethernet */
{ 0xdc000000, 0x10000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* GLCD */
LAST_DESC
};
여기서 GLCD의 physical주소는 임의로 정해도 되는지와 디바이스 드라이버나
커널에 이식될 함수에서 이 매핑된 가상 주소로(0xdc00000) 데이터를 써주
면 바로 GLCD를 제어 할수 있는지 궁금합니다.
그리고 GPIO 부분인데여 선언은 이렇게 해줬습니다.
#define SA11X0_REGISTER_BASE 0x80000000
#define SA11X0_REGISTER(x) REG32_PTR
(SA11X0_REGISTER_BASE + (x))
#define SA11X0_GPIO_PIN_LEVEL SA11X0_REGISTER
(0x10040000)
#define SA11X0_GPIO_PIN_DIRECTION SA11X0_REGISTER
(0x10040004)
#define SA11X0_GPIO_PIN_OUTPUT_SET SA11X0_REGISTER
(0x10040008)
#define SA11X0_GPIO_PIN_OUTPUT_CLEAR SA11X0_REGISTER
(0x1004000C)
#define SA11X0_GPIO_RISING_EDGE_DETECT SA11X0_REGISTER
(0x10040010)
#define SA11X0_GPIO_FALLING_EDGE_DETECT SA11X0_REGISTER
(0x10040014)
#define SA11X0_GPIO_EDGE_DETECT_STATUS SA11X0_REGISTER
(0x10040018)
#define SA11X0_GPIO_ALTERNATE_FUNCTION SA11X0_REGISTER
(0x1004001C)
그런데 void sa1110_init()여기에서
*SA11X0_GPIO_ALTERNATE_FUNCTION &= 0xfffffeff; // interrupt pin
as a gpio8
*SA11X0_GPIO_PIN_DIRECTION |= 0x080a0000; // reset pin as
an output
*SA11X0_GPIO_PIN_DIRECTION &= 0xfffffeff; // interrupt pin
as a input
*SA11X0_GPIO_RISING_EDGE_DETECT = 0x00000100; // rising edge
detect enabled
*SA11X0_GPIO_FALLING_EDGE_DETECT = 0x00000000; // falling edge
detect disabled
*MSC1 = (rt)| (rdf << 3) | (rdn << 8) | (rrr << 13) | (rt << 16)
| (rdf << 19) | (rdn << 2
4) | (rrr << 29);
*MSC2 = (rt)| (rdf << 3) | (rdn << 8) | (rrr << 13) | (rt << 16)
| (rdf << 19) | (rdn << 2
4) | (rrr << 29);
}
이 부분의 설정부분이 이해가 되지 않습니다. 여기서 쓰인 주소값은 어디를
참고해서 쓰여져야 하는것인지요 ? 그리고 MSC 부분의 내용도 이해가 되지
않는군여 벌써 이것만 15일이 넘어 가네요 빨랑 해야하는데.. 부탁드립다..
static struct map_desc wavysound_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash
bank 0 */
{ 0xf0000000, 0x08000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /*
Ethernet */
{ 0xdc000000, 0x10000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* GLCD */
LAST_DESC
};
여기서 GLCD의 physical주소는 임의로 정해도 되는지와 디바이스 드라이버나
커널에 이식될 함수에서 이 매핑된 가상 주소로(0xdc00000) 데이터를 써주
면 바로 GLCD를 제어 할수 있는지 궁금합니다.
그리고 GPIO 부분인데여 선언은 이렇게 해줬습니다.
#define SA11X0_REGISTER_BASE 0x80000000
#define SA11X0_REGISTER(x) REG32_PTR
(SA11X0_REGISTER_BASE + (x))
#define SA11X0_GPIO_PIN_LEVEL SA11X0_REGISTER
(0x10040000)
#define SA11X0_GPIO_PIN_DIRECTION SA11X0_REGISTER
(0x10040004)
#define SA11X0_GPIO_PIN_OUTPUT_SET SA11X0_REGISTER
(0x10040008)
#define SA11X0_GPIO_PIN_OUTPUT_CLEAR SA11X0_REGISTER
(0x1004000C)
#define SA11X0_GPIO_RISING_EDGE_DETECT SA11X0_REGISTER
(0x10040010)
#define SA11X0_GPIO_FALLING_EDGE_DETECT SA11X0_REGISTER
(0x10040014)
#define SA11X0_GPIO_EDGE_DETECT_STATUS SA11X0_REGISTER
(0x10040018)
#define SA11X0_GPIO_ALTERNATE_FUNCTION SA11X0_REGISTER
(0x1004001C)
그런데 void sa1110_init()여기에서
*SA11X0_GPIO_ALTERNATE_FUNCTION &= 0xfffffeff; // interrupt pin
as a gpio8
*SA11X0_GPIO_PIN_DIRECTION |= 0x080a0000; // reset pin as
an output
*SA11X0_GPIO_PIN_DIRECTION &= 0xfffffeff; // interrupt pin
as a input
*SA11X0_GPIO_RISING_EDGE_DETECT = 0x00000100; // rising edge
detect enabled
*SA11X0_GPIO_FALLING_EDGE_DETECT = 0x00000000; // falling edge
detect disabled
*MSC1 = (rt)| (rdf << 3) | (rdn << 8) | (rrr << 13) | (rt << 16)
| (rdf << 19) | (rdn << 2
4) | (rrr << 29);
*MSC2 = (rt)| (rdf << 3) | (rdn << 8) | (rrr << 13) | (rt << 16)
| (rdf << 19) | (rdn << 2
4) | (rrr << 29);
}
이 부분의 설정부분이 이해가 되지 않습니다. 여기서 쓰인 주소값은 어디를
참고해서 쓰여져야 하는것인지요 ? 그리고 MSC 부분의 내용도 이해가 되지
않는군여 벌써 이것만 15일이 넘어 가네요 빨랑 해야하는데.. 부탁드립다..