Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}