i2c: Kill rogue driver IDs
[linux-2.6.git] / drivers / usb / host / ohci-pnx4008.c
index 82cb22f..6c52c66 100644 (file)
@@ -4,7 +4,7 @@
  * driver for Philips PNX4008 USB Host
  *
  * Authors: Dmitry Chigirev <source@mvista.com>
- *         Vitaly Wool <vitalywool@gmail.com>
+ *         Vitaly Wool <vitalywool@gmail.com>
  *
  * register initialization is based on code examples provided by Philips
  * Copyright (c) 2005 Koninklijke Philips Electronics N.V.
@@ -29,7 +29,7 @@
 #include <asm/arch/irqs.h>
 #include <asm/arch/gpio.h>
 
-#define USB_CTRL       IO_ADDRESS(PNX4008_PWRMAN_BASE + 0x64)
+#define USB_CTRL       IO_ADDRESS(PNX4008_PWRMAN_BASE + 0x64)
 
 /* USB_CTRL bit defines */
 #define USB_SLAVE_HCLK_EN      (1 << 24)
@@ -112,9 +112,9 @@ static int isp1301_detach(struct i2c_client *client);
 static int isp1301_command(struct i2c_client *client, unsigned int cmd,
                           void *arg);
 
-static unsigned short normal_i2c[] =
+static const unsigned short normal_i2c[] =
     { ISP1301_I2C_ADDR, ISP1301_I2C_ADDR + 1, I2C_CLIENT_END };
-static unsigned short dummy_i2c_addrlist[] = { I2C_CLIENT_END };
+static const unsigned short dummy_i2c_addrlist[] = { I2C_CLIENT_END };
 
 static struct i2c_client_address_data addr_data = {
        .normal_i2c = normal_i2c,
@@ -123,7 +123,6 @@ static struct i2c_client_address_data addr_data = {
 };
 
 struct i2c_driver isp1301_driver = {
-       .id = I2C_DRIVERID_I2CDEV,      /* Fake Id */
        .class = I2C_CLASS_HWMON,
        .attach_adapter = isp1301_probe,
        .detach_client = isp1301_detach,
@@ -134,7 +133,7 @@ static int isp1301_attach(struct i2c_adapter *adap, int addr, int kind)
 {
        struct i2c_client *c;
 
-       c = (struct i2c_client *)kzalloc(sizeof(*c), SLAB_KERNEL);
+       c = kzalloc(sizeof(*c), GFP_KERNEL);
 
        if (!c)
                return -ENOMEM;
@@ -262,6 +261,7 @@ static const struct hc_driver ohci_pnx4008_hc_driver = {
         */
        .start = ohci_pnx4008_start,
        .stop = ohci_stop,
+       .shutdown = ohci_shutdown,
 
        /*
         * managing i/o requests and associated device resources
@@ -280,7 +280,11 @@ static const struct hc_driver ohci_pnx4008_hc_driver = {
         */
        .hub_status_data = ohci_hub_status_data,
        .hub_control = ohci_hub_control,
-
+       .hub_irq_enable = ohci_rhsc_enable,
+#ifdef CONFIG_PM
+       .bus_suspend = ohci_bus_suspend,
+       .bus_resume = ohci_bus_resume,
+#endif
        .start_port_reset = ohci_start_port_reset,
 };
 
@@ -410,15 +414,13 @@ static int __devinit usb_hcd_pnx4008_probe(struct platform_device *pdev)
                goto out4;
        }
 
-       hcd->self.hcpriv = (void *)hcd;
-
        pnx4008_start_hc();
        platform_set_drvdata(pdev, hcd);
        ohci = hcd_to_ohci(hcd);
        ohci_hcd_init(ohci);
 
        dev_info(&pdev->dev, "at 0x%p, irq %d\n", hcd->regs, hcd->irq);
-       ret = usb_add_hcd(hcd, irq, SA_INTERRUPT);
+       ret = usb_add_hcd(hcd, irq, IRQF_DISABLED);
        if (ret == 0)
                return ret;
 
@@ -462,15 +464,3 @@ static struct platform_driver usb_hcd_pnx4008_driver = {
        .remove = usb_hcd_pnx4008_remove,
 };
 
-static int __init usb_hcd_pnx4008_init(void)
-{
-       return platform_driver_register(&usb_hcd_pnx4008_driver);
-}
-
-static void __exit usb_hcd_pnx4008_cleanup(void)
-{
-       return platform_driver_unregister(&usb_hcd_pnx4008_driver);
-}
-
-module_init(usb_hcd_pnx4008_init);
-module_exit(usb_hcd_pnx4008_cleanup);