/****************************************************************************** ** File Name: xxx_test.c ** Author: xxx ** Date: 22/08/2001 ** Copyright: 2001 Spreadtrum, Incorporated. All Rights Reserved. ** Description: Module test entry template file. ** ** ***************************************************************************** ***************************************************************************** ** Edit History **--------------------------------------------------------------------------* ** DATE NAME DESCRIPTION ** 22/08/2001 xxx Create. *****************************************************************************/ /**---------------------------------------------------------------------------* ** Dependencies * **---------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "sprd_zipdec_drv.h" unsigned long REGS_ZIPDEC_BASE = 0; void sprd_zipmatrix_reset(void) { u32 i; sci_glb_set(REG_GLB_SET(REG_AP_AHB_AHB_RST),BIT_ZIP_MTX_SOFT_RST|BIT_ZIPDEC_SOFT_RST); for(i=0;i<0x200;i++); sci_glb_set(REG_GLB_CLR(REG_AP_AHB_AHB_RST),BIT_ZIP_MTX_SOFT_RST|BIT_ZIPDEC_SOFT_RST); } void sprd_zipdec_reset(void) { u32 i; sci_glb_set(REG_GLB_SET(REG_AP_AHB_AHB_RST),BIT_ZIPDEC_SOFT_RST); for(i=0;i<0x200;i++); sci_glb_set(REG_GLB_CLR(REG_AP_AHB_AHB_RST),BIT_ZIPDEC_SOFT_RST); } void sprd_zipdec_enable(u32 enable) { if(enable) { sci_glb_set(REG_GLB_SET(REG_AP_AHB_AHB_EB),BIT_ZIPDEC_EB); sci_glb_set(REG_GLB_SET(REG_AON_APB_APB_EB1),BIT_ZIP_EMC_EB); } else { sci_glb_set(REG_GLB_CLR(REG_AP_AHB_AHB_EB),BIT_ZIPDEC_EB); //sci_glb_set(REG_GLB_CLR(REG_AON_APB_APB_EB1),BIT_ZIP_EMC_EB); } } void ZipDec_Run(void) { u32 reg_val; reg_val = __raw_readl((void __iomem*)(REGS_ZIPDEC_BASE+ZIPDEC_CTRL)); reg_val |= ZIPDEC_RUN; __raw_writel(reg_val,(void __iomem*)(REGS_ZIPDEC_BASE+ZIPDEC_CTRL)); } void ZipDec_In_Out_SwtMode(u32 Inmode,u32 Outmode) { u32 reg_val; reg_val = __raw_readl((void __iomem*)(REGS_ZIPDEC_BASE+ZIPDEC_CTRL)); reg_val &= ~(ZIPDEC_IN_SWT_MASK|ZIPDEC_OUT_SWT_MASK); reg_val |= (Inmode<dev, "zipdec get io resource failed!\n"); return -ENODEV; } REGS_ZIPDEC_BASE = (unsigned long)ioremap_nocache(regs->start,resource_size(regs)); if (!REGS_ZIPDEC_BASE){ dev_err(&pdev->dev, "zipdec get base address failed!\n"); return -ENODEV; } //dev_info(&pdev->dev, "probe zipdec get regbase 0x%lx\n",REGS_ZIPDEC_BASE); #if 0 irq_num = platform_get_irq(pdev, 0); if (irq_num < 0) { dev_err(&pdev->dev, "zipdec get irq resource failed!\n"); return irq_num; } dev_info(&pdev->dev, "probe zipdec get irq num %d\n",irq_num); #endif sprd_zipdec_enable(1); // global enable dec sprd_zipdec_reset(); __raw_writel(ZIPDEC_EN,(void __iomem*)(REGS_ZIPDEC_BASE+ZIPDEC_CTRL)); return 0; } static void sprd_zipdec_remove(void) { sprd_zipdec_enable(0); } static const struct of_device_id sprd_zipdec_of_match[] = { { .compatible = "sprd,sprd-zipdec", }, { /* sentinel */ } }; static struct platform_driver sprd_zipdec_driver = { .driver = { .name = "sprd zipdec", .owner = THIS_MODULE, .of_match_table = of_match_ptr(sprd_zipdec_of_match), }, .probe = sprd_zipdec_probe, .remove = __exit_p(sprd_zipdec_remove), }; static int __init sprd_zipdec_init(void) { return platform_driver_register(&sprd_zipdec_driver); } subsys_initcall(sprd_zipdec_init); static void __exit sprd_zipdec_exit(void) { platform_driver_unregister(&sprd_zipdec_driver); } module_exit(sprd_zipdec_exit); MODULE_DESCRIPTION("SpreadTrum ZIPDEC Controller driver"); MODULE_AUTHOR("SPRD"); MODULE_LICENSE("GPL");