From 3462976d10269384fc3f2705e4daff94b5a95e88 Mon Sep 17 00:00:00 2001 From: chenli Date: Thu, 29 Mar 2012 18:13:12 +0800 Subject: [PATCH] IPP: version 1.000:add rk29-ipp.ko support --- arch/arm/mach-rk29/board-rk29-ddr3sdk.c | 6 +++-- arch/arm/mach-rk29/board-rk29-k97.c | 4 ++-- arch/arm/mach-rk29/devices.c | 6 +++-- arch/arm/plat-rk/include/plat/ipp.h | 3 ++- drivers/staging/Makefile | 2 +- drivers/staging/rk29/ipp/Kconfig | 2 +- drivers/staging/rk29/ipp/Makefile | 5 ++-- drivers/staging/rk29/ipp/rk29-ipp-stub.c | 29 ++++++++++++++++++++++++ drivers/staging/rk29/ipp/rk29-ipp.c | 23 +++++++++++-------- pack-kernel-rk29.sh | 4 +++- 10 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 drivers/staging/rk29/ipp/rk29-ipp-stub.c diff --git a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c index 4bae125b8657..8de542f17ae3 100755 --- a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c +++ b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c @@ -2846,9 +2846,11 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_USB_ANDROID_RNDIS &rk29_device_rndis, #endif -#ifdef CONFIG_RK29_IPP + +//#ifdef CONFIG_RK29_IPP &rk29_device_ipp, -#endif +//#endif + #ifdef CONFIG_VIDEO_RK29XX_VOUT &rk29_v4l2_output_devce, #endif diff --git a/arch/arm/mach-rk29/board-rk29-k97.c b/arch/arm/mach-rk29/board-rk29-k97.c index 62f5fefe0e7a..82ec490c49c2 100755 --- a/arch/arm/mach-rk29/board-rk29-k97.c +++ b/arch/arm/mach-rk29/board-rk29-k97.c @@ -2815,9 +2815,9 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_USB_ANDROID_RNDIS &rk29_device_rndis, #endif -#ifdef CONFIG_RK29_IPP +//#ifdef CONFIG_RK29_IPP &rk29_device_ipp, -#endif +//#endif #ifdef CONFIG_VIDEO_RK29XX_VOUT &rk29_v4l2_output_devce, #endif diff --git a/arch/arm/mach-rk29/devices.c b/arch/arm/mach-rk29/devices.c index 125b3f97f9bd..779a9f13786c 100644 --- a/arch/arm/mach-rk29/devices.c +++ b/arch/arm/mach-rk29/devices.c @@ -597,7 +597,8 @@ static struct platform_device rk29_device_pcm = { .id = -1, }; -#ifdef CONFIG_RK29_IPP + +//#ifdef CONFIG_RK29_IPP /* rk29 ipp resource */ static struct resource rk29_ipp_resource[] = { [0] = { @@ -620,7 +621,8 @@ struct platform_device rk29_device_ipp = { .num_resources = ARRAY_SIZE(rk29_ipp_resource), .resource = rk29_ipp_resource, }; -#endif +//#endif + #ifdef CONFIG_USB20_OTG /*DWC_OTG*/ diff --git a/arch/arm/plat-rk/include/plat/ipp.h b/arch/arm/plat-rk/include/plat/ipp.h index 488f6e8787e2..91fa239d6dc6 100755 --- a/arch/arm/plat-rk/include/plat/ipp.h +++ b/arch/arm/plat-rk/include/plat/ipp.h @@ -128,5 +128,6 @@ typedef enum int ipp_blit_async(const struct rk29_ipp_req *req); -int ipp_blit_sync(const struct rk29_ipp_req *req); +//int ipp_blit_sync(const struct rk29_ipp_req *req); +extern int (*ipp_blit_sync)(const struct rk29_ipp_req *req); #endif /*_RK29_IPP_DRIVER_H_*/ \ No newline at end of file diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile index 03b50930bc30..928ee76119ad 100755 --- a/drivers/staging/Makefile +++ b/drivers/staging/Makefile @@ -44,7 +44,7 @@ obj-$(CONFIG_DX_SEP) += sep/ obj-$(CONFIG_IIO) += iio/ obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio/ #obj-$(CONFIG_VIVANTE) += rk29/vivante/ -obj-$(CONFIG_RK29_IPP) += rk29/ipp/ +obj-y += rk29/ipp/ obj-$(CONFIG_ZRAM) += zram/ obj-$(CONFIG_XVMALLOC) += zram/ obj-$(CONFIG_ZCACHE) += zcache/ diff --git a/drivers/staging/rk29/ipp/Kconfig b/drivers/staging/rk29/ipp/Kconfig index 81a951f3178d..8f93652870e8 100755 --- a/drivers/staging/rk29/ipp/Kconfig +++ b/drivers/staging/rk29/ipp/Kconfig @@ -1,7 +1,7 @@ menu "IPP" config RK29_IPP tristate "ROCKCHIP RK29 IPP" - default y + default m help rk29 ipp module. diff --git a/drivers/staging/rk29/ipp/Makefile b/drivers/staging/rk29/ipp/Makefile index 674c218582e7..79bbd9a33a40 100644 --- a/drivers/staging/rk29/ipp/Makefile +++ b/drivers/staging/rk29/ipp/Makefile @@ -2,5 +2,6 @@ # Makefile for the ipp. # -obj-$(CONFIG_RK29_IPP) += rk29-ipp.o -rk29ipp-objs := rk29-ipp.o \ No newline at end of file +obj-y += rk29-ipp-stub.o +#obj-$(CONFIG_RK29_IPP) += rk29-ipp.o +#rk29ipp-objs := rk29-ipp.o diff --git a/drivers/staging/rk29/ipp/rk29-ipp-stub.c b/drivers/staging/rk29/ipp/rk29-ipp-stub.c new file mode 100644 index 000000000000..74789450a51a --- /dev/null +++ b/drivers/staging/rk29/ipp/rk29-ipp-stub.c @@ -0,0 +1,29 @@ +/* drivers/staging/rk29/ipp/rk29-ipp-stub.c + * + * Copyright (C) 2010 ROCKCHIP, Inc. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/*This is a dummy file */ +#include +#include +#include +#include +#include + +static int ipp_blit_sync_default(const struct rk29_ipp_req *req) +{ + return 0; +} + +int (*ipp_blit_sync)(const struct rk29_ipp_req *req) = ipp_blit_sync_default; +EXPORT_SYMBOL(ipp_blit_sync); diff --git a/drivers/staging/rk29/ipp/rk29-ipp.c b/drivers/staging/rk29/ipp/rk29-ipp.c index 82cc65116019..f52081215216 100644 --- a/drivers/staging/rk29/ipp/rk29-ipp.c +++ b/drivers/staging/rk29/ipp/rk29-ipp.c @@ -43,6 +43,7 @@ #include #include +#define IPP_VERSION "1.000" //#define IPP_TEST #ifdef IPP_TEST @@ -962,7 +963,7 @@ int ipp_blit_async(const struct rk29_ipp_req *req) return ret; } -int ipp_blit_sync(const struct rk29_ipp_req *req) +static int ipp_blit_sync_real(const struct rk29_ipp_req *req) { int status; int wait_ret; @@ -1614,7 +1615,6 @@ static int __devinit ipp_drv_probe(struct platform_device *pdev) struct ipp_drvdata *data; int ret = 0; - data = kmalloc(sizeof(struct ipp_drvdata), GFP_KERNEL); if(NULL==data) { @@ -1832,13 +1832,18 @@ static int __init rk29_ipp_init(void) { int ret; + //set ipp_blit_sync pointer + ipp_blit_sync = ipp_blit_sync_real; + if ((ret = platform_driver_register(&rk29_ipp_driver)) != 0) - { - ERR("Platform device register failed (%d).\n", ret); - return ret; - } - INFO("Module initialized.\n"); - return 0; + { + ERR("Platform device register failed (%d).\n", ret); + return ret; + } + + INFO("Module initialized.\n"); + printk("IPP init, version %s\n",IPP_VERSION); + return 0; } static void __exit rk29_ipp_exit(void) @@ -1848,7 +1853,7 @@ static void __exit rk29_ipp_exit(void) -device_initcall_sync(rk29_ipp_init); +module_init(rk29_ipp_init); module_exit(rk29_ipp_exit); /* Module information */ diff --git a/pack-kernel-rk29.sh b/pack-kernel-rk29.sh index f3c5b0441c49..f7835b01b2a1 100755 --- a/pack-kernel-rk29.sh +++ b/pack-kernel-rk29.sh @@ -10,7 +10,7 @@ arch/arm/mach-rk29/verifyID.c arch/arm/plat-rk/vpu*.c -drivers/staging/rk29/ipp/rk29-ipp.c +#drivers/staging/rk29/ipp/rk29-ipp.c ) EXCLUDES=( @@ -33,6 +33,8 @@ arch/arm/mach-rk29/ddr_reconfig.c drivers/staging/rk29/vivante +drivers/staging/rk29/ipp/rk29-ipp.c + arch/arm/mach-rk29/board-rk29sdk.c arch/arm/configs/rk29_sdk_defconfig arch/arm/configs/rk29_sdk_yaffs2_defconfig -- 2.34.1