The attachment is broken. Attached the code below.
---
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
//#include <asm/arch/mxcfb.h>
#define MXCFB_SET_GBL_ALPHA _IOW('F', 0x21, struct mxcfb_gbl_alpha)
#define MXCFB_SET_CLR_KEY _IOW('F', 0x22, struct mxcfb_color_key)
#define MXCFB_SET_LOC_ALPHA _IOWR('F', 0x26, struct mxcfb_loc_alpha)
struct mxcfb_gbl_alpha {
int enable;
int alpha;
};
struct mxcfb_color_key {
int enable;
__u32 color_key;
};
struct mxcfb_loc_alpha {
int enable;
int alpha_in_pixel;
unsigned long alpha_phy_addr0;
unsigned long alpha_phy_addr1;
};
int main(int argc, char **argv)
{
int fb_fd;
struct mxcfb_gbl_alpha gbl_alpha;
struct mxcfb_loc_alpha l_alpha;
struct mxcfb_color_key key;
char fbname[128];
char *endptr;
if(argc < 3){
printf("Usage: %s fb_chn [gn|ln] [alpha_val[0-255]] [color_key[0x00000000-0xffffffff]]\n",argv[0]);
return -1;
}
memset(fbname, 0, sizeof(fbname));
sprintf(fbname, "/dev/graphics/fb%s", argv[1]);
printf("open '%s'\n", fbname);
fb_fd = open(fbname,O_RDWR,0);
if (fb_fd == -1) {
perror("open");
exit(1);
}
if (argv[2][0] == 'g') {
gbl_alpha.enable = 1;
gbl_alpha.alpha = atoi(argv[3]);
if (ioctl(fb_fd, MXCFB_SET_GBL_ALPHA, &gbl_alpha))
perror("ioctl");
if (argv[2][1] == '1') {
printf("enable global alpha blending\n");
key.enable = 1;
} else {
printf("disable global alpha blending\n");
key.enable = 0;
}
key.color_key = strtol(argv[4], &endptr, 16);
printf("key = 0x%x\n", key.color_key);
if (ioctl(fb_fd, MXCFB_SET_CLR_KEY, &key))
perror("ioctl");
} else if (argv[2][0] =='l') {
if (argv[2][1] == '1') {
l_alpha.enable = 1;
printf("enable local alpha blending\n");
} else {
l_alpha.enable = 0;
printf("disable local alpha blending\n");
}
l_alpha.alpha_in_pixel = 1;
if (ioctl(fb_fd, MXCFB_SET_LOC_ALPHA, &l_alpha))
perror("ioctl");
}
close(fb_fd);
return 0;
}