From 8e4bff4cab0ddac6060645b0715210484d02ff40 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Wed, 30 Aug 2017 08:25:59 +0000 Subject: Initial file dump from open source release --- lib/lzo/sprd_zipdec_drv.c | 238 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100755 lib/lzo/sprd_zipdec_drv.c (limited to 'lib/lzo/sprd_zipdec_drv.c') diff --git a/lib/lzo/sprd_zipdec_drv.c b/lib/lzo/sprd_zipdec_drv.c new file mode 100755 index 00000000..73768610 --- /dev/null +++ b/lib/lzo/sprd_zipdec_drv.c @@ -0,0 +1,238 @@ +/****************************************************************************** + ** 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"); -- cgit v1.3.1