static int sanremo_ts_remove(struct platform_device *pdev)
{
	pmic_callback_unregister(PMIC_EVENT_TOUCH, sanremo_ts_interrupt);
	input_unregister_device(sanremo_ts_input_dev);
	kfree(sanremo_td->ts_timer);
	kfree(sanremo_td);

	return 0;
}
static void __exit littleton_ts_exit( void )
{
	/* We move these codes here because we want to detect the
	 * pen down event even when touch driver is not opened.
	 */
	micco_tsi_poweroff();	
	micco_enable_pen_down_irq(0);
	pmic_callback_unregister(PMIC_EVENT_TOUCH, lt_touch_interrupt);

	platform_driver_unregister(&lt_ts_drv);
}
static int tavorevb_vbus_detect(void *func, int enable)
{
	if (enable) {
		pmic_callback_register(PMIC_EVENT_USB, func);
		pxa3xx_pmic_set_pump(1);
	} else {
		pxa3xx_pmic_set_pump(0);
		pmic_callback_unregister(PMIC_EVENT_USB, func);
	}

	return 0;
}
static int AMI8563_detach(struct i2c_client *client)
{
	struct AMI8563 *pAMI8563 = container_of(client, struct AMI8563, client);
	struct rtc_device *rtc = i2c_get_clientdata(client);

 	pmic_callback_unregister(PMIC_EVENT_EXTON, AMI8563_alarm_event_handler);
	
	if (rtc)
		rtc_device_unregister(rtc);
	
	i2c_detach_client(client);
	
	kfree(pAMI8563);
	
	return 0;
}