static int __devinit etb_probe(struct platform_device *pdev) { int ret; struct resource *res; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { ret = -EINVAL; goto err_res; } etb.base = ioremap_nocache(res->start, resource_size(res)); if (!etb.base) { ret = -EINVAL; goto err_ioremap; } etb.dev = &pdev->dev; mutex_init(&etb.mutex); ret = misc_register(&etb_misc); if (ret) goto err_misc; etb.buf = kzalloc(ETB_SIZE_WORDS * BYTES_PER_WORD, GFP_KERNEL); if (!etb.buf) { ret = -ENOMEM; goto err_alloc; } etb_sysfs_init(); dev_info(etb.dev, "ETB initialized\n"); return 0; err_alloc: misc_deregister(&etb_misc); err_misc: mutex_destroy(&etb.mutex); iounmap(etb.base); err_ioremap: err_res: dev_err(etb.dev, "ETB init failed\n"); return ret; }
static int __devinit etb_probe(struct platform_device *pdev) { int ret; struct resource *res; if (!sec_debug_level.en.kernel_fault) { pr_info("%s: debug level is low\n",__func__); return -ENODEV; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { ret = -EINVAL; goto err_res; } etb.base = ioremap_nocache(res->start, resource_size(res)); if (!etb.base) { ret = -EINVAL; goto err_ioremap; } etb.dev = &pdev->dev; spin_lock_init(&etb.spinlock); ret = misc_register(&etb_misc); if (ret) goto err_misc; /* Free up the 16 KB of kernel Space as there is already * predefined buffer in LK why not reuse the same space * if Lk did not reserve than we can */ if (etbbuf_paddr == 0) { etb.buf = kzalloc(ETB_SIZE_WORDS * BYTES_PER_WORD, GFP_KERNEL); pr_info("%s: etb buffer not provided. Using kmalloc..\n", __func__); } else { etb.buf = ioremap_nocache(etbbuf_paddr, etbbuf_size); } if (!etb.buf) { ret = -ENOMEM; goto err_alloc; } etb_sysfs_init(); dev_info(etb.dev, "ETB initialized\n"); return 0; err_alloc: misc_deregister(&etb_misc); err_misc: iounmap(etb.base); err_ioremap: err_res: dev_err(etb.dev, "ETB init failed\n"); return ret; }