Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3a1ba60 authored by Abraham Arce's avatar Abraham Arce Committed by Dmitry Torokhov
Browse files

Input: omap4-keypad - use platform device helpers



Get mem and irq resources using platform helpers

 - platform_get_base
 - platform_get_irq

Signed-off-by: default avatarAbraham Arce <x0066660@ti.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 4c61c845
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -8,9 +8,7 @@ struct omap4_keypad_platform_data {


	u8 rows;
	u8 rows;
	u8 cols;
	u8 cols;

	u16 irq;
	void __iomem *base;
};
};


extern int omap4_keyboard_init(struct omap4_keypad_platform_data *);
#endif
#endif
+35 −5
Original line number Original line Diff line number Diff line
@@ -148,7 +148,10 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
	const struct omap4_keypad_platform_data *pdata;
	const struct omap4_keypad_platform_data *pdata;
	struct omap4_keypad *keypad_data;
	struct omap4_keypad *keypad_data;
	struct input_dev *input_dev;
	struct input_dev *input_dev;
	struct resource *res;
	resource_size_t size;
	unsigned int row_shift, max_keys;
	unsigned int row_shift, max_keys;
	int irq;
	int error;
	int error;


	/* platform data */
	/* platform data */
@@ -158,12 +161,14 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
		return -EINVAL;
		return -EINVAL;
	}
	}


	if (!pdata->base) {
	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!res) {
		dev_err(&pdev->dev, "no base address specified\n");
		dev_err(&pdev->dev, "no base address specified\n");
		return -EINVAL;
		return -EINVAL;
	}
	}


	if (!pdata->irq) {
	irq = platform_get_irq(pdev, 0);
	if (!irq) {
		dev_err(&pdev->dev, "no keyboard irq assigned\n");
		dev_err(&pdev->dev, "no keyboard irq assigned\n");
		return -EINVAL;
		return -EINVAL;
	}
	}
@@ -184,9 +189,23 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
		return -ENOMEM;
		return -ENOMEM;
	}
	}


	keypad_data->base = pdata->base;
	size = resource_size(res);
	keypad_data->irq = pdata->irq;

	res = request_mem_region(res->start, size, pdev->name);
	if (!res) {
		dev_err(&pdev->dev, "can't request mem region\n");
		error = -EBUSY;
		goto err_free_keypad;
	}


	keypad_data->base = ioremap(res->start, resource_size(res));
	if (!keypad_data->base) {
		dev_err(&pdev->dev, "can't ioremap mem resource\n");
		error = -ENOMEM;
		goto err_release_mem;
	}

	keypad_data->irq = irq;
	keypad_data->row_shift = row_shift;
	keypad_data->row_shift = row_shift;
	keypad_data->rows = pdata->rows;
	keypad_data->rows = pdata->rows;
	keypad_data->cols = pdata->cols;
	keypad_data->cols = pdata->cols;
@@ -195,7 +214,7 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
	keypad_data->input = input_dev = input_allocate_device();
	keypad_data->input = input_dev = input_allocate_device();
	if (!input_dev) {
	if (!input_dev) {
		error = -ENOMEM;
		error = -ENOMEM;
		goto err_free_keypad;
		goto err_unmap;
	}
	}


	input_dev->name = pdev->name;
	input_dev->name = pdev->name;
@@ -243,6 +262,10 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
	free_irq(keypad_data->irq, keypad_data);
	free_irq(keypad_data->irq, keypad_data);
err_free_input:
err_free_input:
	input_free_device(input_dev);
	input_free_device(input_dev);
err_unmap:
	iounmap(keypad_data->base);
err_release_mem:
	release_mem_region(res->start, size);
err_free_keypad:
err_free_keypad:
	kfree(keypad_data);
	kfree(keypad_data);
	return error;
	return error;
@@ -251,9 +274,16 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
static int __devexit omap4_keypad_remove(struct platform_device *pdev)
static int __devexit omap4_keypad_remove(struct platform_device *pdev)
{
{
	struct omap4_keypad *keypad_data = platform_get_drvdata(pdev);
	struct omap4_keypad *keypad_data = platform_get_drvdata(pdev);
	struct resource *res;


	free_irq(keypad_data->irq, keypad_data);
	free_irq(keypad_data->irq, keypad_data);
	input_unregister_device(keypad_data->input);
	input_unregister_device(keypad_data->input);

	iounmap(keypad_data->base);

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	release_mem_region(res->start, resource_size(res));

	kfree(keypad_data);
	kfree(keypad_data);
	platform_set_drvdata(pdev, NULL);
	platform_set_drvdata(pdev, NULL);