Port-hpcsh archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RTC on SH7709



Hello,

Section 13 from SH7709 datasheet says that this CPU contains on-chip RTC. 
What's the reason to lack of it's support in hpcsh port? I've done some 
attempts to handle this RTC in userspace, but with no luck - am I doing 
something wrong, or maybe this RTC is broken in Jornada?

[gophi@hpcsh ~/src]$ sudo ./rtc
virtual=0x20434EDC physical=0xFFFFFEDC
virtual=0x20436EDE physical=0xFFFFFEDE
virtual=0x20437EC2 physical=0xFFFFFEC2
0# 0x17
1# 0x74
2# 0x08
3# 0x74
4# 0x08
5# 0xE0
6# 0xE0
7# 0x74
8# 0x0B
9# 0xE0

And the code (you need securelevel set to 0):

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>

typedef volatile unsigned char * volatile ptr_t;

ptr_t map_byte(int fd, off_t off)
{
        ptr_t p = mmap(NULL, sizeof(char), PROT_READ | PROT_WRITE, MAP_SHARED, 
fd, off);

        if (p == MAP_FAILED) {
                perror("mmap");
                exit(EXIT_FAILURE);
        }

        printf("virtual=0x%08X physical=0x%08X\n", p, off);

        return p;
}

void unmap_byte(ptr_t p)
{
        munmap((void *) p, sizeof(char));
}

int main(void)
{
        ptr_t rcr1, rcr2, rseccnt;
        int fd, i;

        fd = open("/dev/mem", O_RDWR);
        if (fd == -1) {
                perror("open");
                exit(EXIT_FAILURE);
        }

        rcr1 = map_byte(fd, 0xFFFFFEDC);
        rcr2 = map_byte(fd, 0xFFFFFEDE);
        rseccnt = map_byte(fd, 0xFFFFFEC2);

        *rcr2 |= (1 << 3) | (1 << 1);   // rtcen, reset
        *rseccnt = 0;
        *rcr2 = (1 << 0);               // start

        for (i = 0; i < 10; i++) {
                unsigned char ch;

                *rcr1 &= ~(1 << 4);     // cie
                *rcr1 &= ~(1 << 7);     // cf

                ch = *rseccnt;

                printf("%d# 0x%02X\n", i, ch);
                sleep(1);
        }

        unmap_byte(rseccnt);
        unmap_byte(rcr2);
        unmap_byte(rcr1);
        close(fd);

        return 0;
}

-- 
[ Adam Wysocki, +48 22 532 69 07, +48 514 710 213, www.chmurka.net ]
[ Software Research and Development Department, ArcaBit Sp. z o.o. ]
[ Ul. Fortuny 9, 01-339 Warszawa, Poland * http://www.arcabit.com/ ]



Home | Main Index | Thread Index | Old Index