bvdd

КПК с Linux, установка Linux на iPaq и другие модели, программы
Закрыто
sash
Доктор (4 lvl)
Сообщения: 338
Зарегистрирован: Пт июл 04, 2003 13:33

Сообщение sash » Чт июл 20, 2006 18:43

что именно интересует?

maslovsky
Нобелевский лауреат (7 lvl)
Сообщения: 2781
Зарегистрирован: Пн окт 20, 2003 20:14

Re: bvdd

Сообщение maslovsky » Вт июл 25, 2006 15:13

CGen писал(а):Кто может подсказать толком, что это такое?
Я только знаю, что устройство в /dev , которое дает доступ к каким-то специфичным для pxa270 ресурсам.

Где взять документацию, исходники и т.д. ?
Исходник драйвера есть в ядре Cacko и, думаю, pdaxrom тоже. Документации нет.

sash
Доктор (4 lvl)
Сообщения: 338
Зарегистрирован: Пт июл 04, 2003 13:33

Сообщение sash » Вт июл 25, 2006 16:00

CGen писал(а):Интересует всё ;-)

Точнее, как я его могу использовать.
Хочу оптимизировать некоторые вещи под pxa270, чтобы можно было X не загружать (SDL и т.д.).
Всё что мне попадалось было на японском.

Я понял, что это похоже на оверлеи.
в ядре 2.6 нет такого драйвера. Есть pxafb_overlay - 2 оверлея экрана и один оверлей курсора (/dev/fb1, fb2, fb3).
1й поддерживает RGB цвет, 2й YUV и RGB, и 3й (курсорный) RGB.
Инициализация происходит подобно обычным фреймбуферам (с указанием доп инфы для цвета).

Вобще вся инфа по оверлеям и оптимизации есть в даташитах и аппнотесах на процессор pxa27x.

sash
Доктор (4 lvl)
Сообщения: 338
Зарегистрирован: Пт июл 04, 2003 13:33

Сообщение sash » Пт авг 04, 2006 22:48

конечно) я инитю его так:

Код: Выделить всё

#define PIX_FMT_RGB		0
#define PIX_FMT_YCbCr444	2
#define PIX_FMT_YCbCr422	3
#define PIX_FMT_YCbCr420	4

#define PXA_OVL_SETUP(fmt, xpos, ypos) (((fmt & 7) << 20) | ((ypos & 0x3ff) << 10) | ((xpos & 0x3ff)))

struct fb_fix_screeninfo fix;
struct fb_var_screeninfo var;
int fb_fd;

	fb_fd = open("/dev/fb0", O_RDWR);
	if (fb_fd == -1) {
	    perror("open fbdevice");
	    return 1;
	}

	if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &fix) < 0) {
	    perror("ioctl FBIOGET_FSCREENINFO");
	    close(fb_fd);
	    return 1;
	}

	if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &var) < 0) {
	    perror("ioctl FBIOGET_VSCREENINFO");
	    close(fb_fd);
	    return 1;
	}

	close(fb_fd);

	fb_fd = open("/dev/fb2", O_RDWR);
	if (fb_fd == -1) {
	    perror("open fbdevice2");
	    return 0;
	}

	printf("/dev/fb2 OK\n");

	var.xres = 320;
	var.yres = 240;
	var.nonstd = PXA_OVL_SETUP(PIX_FMT_RGB, 0, 0);

	if (ioctl(fb_fd, FBIOPUT_VSCREENINFO, &var) < 0) {
	    perror("ioctl FBIOPUT_VSCREENINFO2");
	    close(fb_fd);
	    return 0;
	}

	if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &fix) < 0) {
	    perror("ioctl FBIOGET_FSCREENINFO2");
	    close(fb_fd);
	    return 0;
	}

	if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &var) < 0) {
	    perror("ioctl FBIOGET_VSCREENINFO2");
	    close(fb_fd);
	    return 0;
	}

	printf("width = %d\nheight = %d\npitch = %d\n", var.xres, var.yres, fix.line_length);
	printf("need map %d\n", fix.line_length * var.yres);

	vscr = (word *) mmap(NULL, fix.line_length * var.yres, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fb_fd, 0);
	if ((unsigned char *) vscr == (unsigned char *)-1) {
	    perror("mmap framebuffer");
	    close(fb_fd);
	    return 0;
	}

vsrc - указатель на оверлей

Закрыто

Вернуться в «КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее»