#include <linux/leds.h>
 #include <linux/i2c/lm8323.h>
 
-#include <asm/mach-types.h>
-#include <asm/mach/irq.h>
-
 /* Commands to send to the chip. */
 #define LM8323_CMD_READ_ID             0x80 /* Read chip ID. */
 #define LM8323_CMD_WRITE_CFG           0x81 /* Set configuration item. */
 /* Send trigger.  Argument is same as PWM_WAIT_TRIG. */
 #define PWM_SEND_TRIG(chans)           (0xe000 | ((chans) & 0x7))
 
-#define DRIVER_NAME  "lm8323"
-
 struct lm8323_pwm {
        int                     id;
        int                     enabled;
 static DEVICE_ATTR(disable_kp, 0644, lm8323_show_disable, lm8323_set_disable);
 
 static int lm8323_probe(struct i2c_client *client,
-                                       const struct i2c_device_id *id)
+               const struct i2c_device_id *id)
 {
        struct lm8323_platform_data *pdata;
        struct input_dev *idev;
        i2c_set_clientdata(client, lm);
        lm->client = client;
        pdata = client->dev.platform_data;
-       if (!pdata)
-               return -EINVAL; /* ? */
+       if (!pdata || !pdata->size_x || !pdata->size_y) {
+               dev_err(&client->dev, "missing platform_data\n");
+               err = -EINVAL;
+               goto fail2;
+       }
 
        lm->size_x = pdata->size_x;
-       if (lm->size_x == 0) {
-               lm->size_x = 8;
-       } else if (lm->size_x > 8) {
+       if (lm->size_x > 8) {
                dev_err(&client->dev, "invalid x size %d specified\n",
                                lm->size_x);
-               lm->size_x = 8;
+               err = -EINVAL;
+               goto fail2;
        }
 
        lm->size_y = pdata->size_y;
-       if (lm->size_y == 0) {
-               lm->size_y = 12;
-       } else if (lm->size_y > 12) {
+       if (lm->size_y > 12) {
                dev_err(&client->dev, "invalid y size %d specified\n",
                                lm->size_y);
-               lm->size_x = 12;
+               err = -EINVAL;
+               goto fail2;
        }
 
        dev_vdbg(&client->dev, "Keypad size: %d x %d\n", lm->size_x, lm->size_y);
 
        lm->debounce_time = pdata->debounce_time;
-       if (lm->debounce_time == 0) /* Default. */
-               lm->debounce_time = 12;
-       else if (lm->debounce_time == -1) /* Disable debounce. */
-               lm->debounce_time = 0;
-
        lm->active_time = pdata->active_time;
-       if (lm->active_time == 0) /* Default. */
-               lm->active_time = 500;
-       else if (lm->active_time == -1) /* Disable sleep. */
-               lm->active_time = 0;
 
        lm8323_reset(lm);
 
 
        err = request_irq(client->irq, lm8323_irq,
                          IRQF_TRIGGER_FALLING | IRQF_DISABLED |
-                         IRQF_SAMPLE_RANDOM, DRIVER_NAME, lm);
+                         IRQF_SAMPLE_RANDOM, "lm8323", lm);
        if (err) {
                dev_err(&client->dev, "could not get IRQ %d\n", client->irq);
                goto fail6;
                goto fail7;
 
        idev = input_allocate_device();
-       if (idev == NULL) {
+       if (!idev) {
                err = -ENOMEM;
                goto fail8;
        }
 }
 
 static const struct i2c_device_id lm8323_id[] = {
-       { DRIVER_NAME, 0 },
+       { "lm8323", 0 },
        { }
 };
 
 static struct i2c_driver lm8323_i2c_driver = {
        .driver = {
-               .name    = DRIVER_NAME,
+               .name    = "lm8323",
        },
        .probe          = lm8323_probe,
-       .remove         = __devexit_p(lm8323_remove),
+       .remove         = lm8323_remove,
        .suspend        = lm8323_suspend,
        .resume         = lm8323_resume,
        .id_table       = lm8323_id,
 {
        return i2c_add_driver(&lm8323_i2c_driver);
 }
+module_init(lm8323_init);
 
 static void __exit lm8323_exit(void)
 {
        i2c_del_driver(&lm8323_i2c_driver);
 }
+module_exit(lm8323_exit);
 
 MODULE_AUTHOR("Timo O. Karjalainen <timo.o.karjalainen@nokia.com>, Daniel Stone");
 MODULE_DESCRIPTION("LM8323 keypad driver");
 MODULE_LICENSE("GPL");
 
-module_init(lm8323_init);
-module_exit(lm8323_exit);