update dsp driver
author杜坤明 <dkm@rock-chips.com>
Wed, 19 May 2010 02:34:54 +0000 (02:34 +0000)
committer黄涛 <huangtao@rock-chips.com>
Mon, 21 Jun 2010 05:35:13 +0000 (13:35 +0800)
arch/arm/mach-rk2818/board-midsdk.c
arch/arm/mach-rk2818/devices.c
arch/arm/mach-rk2818/devices.h
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/video/fbmem.c

index c30fa6a6b98bf63089350b3a5dbeaf59aadea5c7..523c92074aab9d0392a482e72bfc3cf85a20d027 100644 (file)
@@ -290,8 +290,9 @@ static struct platform_device *devices[] __initdata = {
        &rk2818_device_pmem,
        &rk2818_device_adc,
        &rk2818_device_adckey,
-  &rk2818_device_fb,    
+    &rk2818_device_fb,    
     &rk2818_device_backlight,
+       &rk2818_device_dsp,
 };
 
 extern struct sys_timer rk2818_timer;
index f9ed143361a847da62a3337cf8ec5291640d33c5..c85174224f1b6c056bda742e70f4c640d150ec8b 100644 (file)
@@ -280,6 +280,40 @@ struct platform_device rk2818_device_adckey = {
 };
 
 
+/*
+ * rk2818 dsp device
+ */
+ static struct resource resources_dsp[] = {
+        [0] = {
+                .start = RK2818_DSP_PHYS,
+                .end   = RK2818_DSP_PHYS + 0x5fffff,
+                .flags = IORESOURCE_DMA,
+        },
+        [1] = {
+                .start  = IRQ_NR_PIUCMD,
+                .end    = IRQ_NR_PIUCMD,
+                .flags  = IORESOURCE_IRQ,
+        },
+        [2] = {
+                .start  = IRQ_NR_DSPSWI,
+                .end    = IRQ_NR_DSPSWI,
+                .flags  = IORESOURCE_IRQ,
+        },
+};
+static u64 rk2818_device_dsp_dmamask = 0xffffffffUL;
+struct platform_device rk2818_device_dsp = {
+        .name             = "rk28-dsp",
+        .id               = 0,
+        .num_resources    = ARRAY_SIZE(resources_dsp),
+        .resource         = resources_dsp,
+        .dev              = {
+                .dma_mask = &rk2818_device_dsp_dmamask,
+                .coherent_dma_mask = 0xffffffffUL
+        }
+};
+
+
+
 #if defined(CONFIG_ANDROID_PMEM)
 static struct android_pmem_platform_data pmem_pdata = {
        .name = "pmem",
index 1e4c78f559f1f7e3fa12df978bcf6fb4f965b0a5..fb31f0cf66361418bb39c5cba495a4b5273e4003 100644 (file)
@@ -31,4 +31,5 @@ extern struct platform_device rk2818_device_fb;
 extern struct platform_device rk2818_device_adc;
 extern struct platform_device rk2818_device_adckey;
 extern struct platform_device rk2818_device_backlight;
+extern struct platform_device rk2818_device_dsp;
 #endif
index d21b3469f6d7a5d1a85904d14315d3c64639c295..ee4ea388c651f2dee4eba8a8eb3a12a0601ce792 100644 (file)
@@ -125,5 +125,7 @@ source "drivers/staging/sep/Kconfig"
 
 source "drivers/staging/iio/Kconfig"
 
+source "drivers/staging/rk2818/rk2818_dsp/Kconfig"
+
 endif # !STAGING_EXCLUDE_BUILD
 endif # STAGING
index b516268957d0afd427a65a46e0791ec330f89a05..f671915a19ce17f626439f3d4c5473b8fe690748 100644 (file)
@@ -44,3 +44,4 @@ obj-$(CONFIG_VME_BUS)         += vme/
 obj-$(CONFIG_RAR_REGISTER)     += rar/
 obj-$(CONFIG_DX_SEP)           += sep/
 obj-$(CONFIG_IIO)              += iio/
+obj-$(CONFIG_RK2818_DSP)        += rk2818/rk2818_dsp/
index 99bbd282ce634186e5d28f9a13cd9ba78658ddc2..8e60b26864f8abc34c4b429ce097c85176afced8 100644 (file)
@@ -41,6 +41,8 @@
      */
 
 #define FBPIXMAPSIZE   (1024 * 8)
+#define SETFBIOVADDR    0x4619
+#define GETFBIOVADDR    0x4620
 
 struct fb_info *registered_fb[FB_MAX] __read_mostly;
 int num_registered_fb __read_mostly;
@@ -1026,6 +1028,7 @@ fb_blank(struct fb_info *info, int blank)
 
        return ret;
 }
+int fb_vaddr = 0;
 
 static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
                        unsigned long arg)
@@ -1144,6 +1147,17 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
                release_console_sem();
                unlock_fb_info(info);
                break;
+#if 1          
+       case SETFBIOVADDR:
+               if (copy_from_user(&fb_vaddr, argp, 4))
+                       return -EFAULT;
+               //printk("fbmem.c  set fb_vaddr = 0x%08x \n",fb_vaddr);
+               break;          
+       case GETFBIOVADDR:
+               copy_to_user(argp, &fb_vaddr, 4);
+               //printk("fbmem.c  get fb_vaddr = 0x%08x \n",fb_vaddr);
+               break;  
+#endif         
        default:
                if (!lock_fb_info(info))
                        return -ENODEV;