Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (61 commits) Dynamic debug: fix pr_fmt() build error Dynamic debug: allow simple quoting of words dynamic debug: update docs dynamic debug: combine dprintk and dynamic printk sysfs: fix some bin_vm_ops errors kobject: don't block for each kobject_uevent sysfs: only allow one scheduled removal callback per kobj Driver core: Fix device_move() vs. dpm list ordering, v2 Driver core: some cleanup on drivers/base/sys.c Driver core: implement uevent suppress in kobject vcs: hook sysfs devices into object lifetime instead of "binding" driver core: fix passing platform_data driver core: move platform_data into platform_device sysfs: don't block indefinitely for unmapped files. driver core: move knode_bus into private structure driver core: move knode_driver into private structure driver core: move klist_children into private structure driver core: create a private portion of struct device driver core: remove polling for driver_probe_done(v5) sysfs: reference sysfs_dirent from sysfs inodes ... Fixed conflicts in drivers/sh/maple/maple.c manually
This commit is contained in:
@@ -168,12 +168,22 @@ static void atml_plat_remove(void)
|
||||
}
|
||||
}
|
||||
|
||||
static struct device_driver atml_drv = {
|
||||
.name = "tpm_atmel",
|
||||
.bus = &platform_bus_type,
|
||||
.owner = THIS_MODULE,
|
||||
.suspend = tpm_pm_suspend,
|
||||
.resume = tpm_pm_resume,
|
||||
static int tpm_atml_suspend(struct platform_device *dev, pm_message_t msg)
|
||||
{
|
||||
return tpm_pm_suspend(&dev->dev, msg);
|
||||
}
|
||||
|
||||
static int tpm_atml_resume(struct platform_device *dev)
|
||||
{
|
||||
return tpm_pm_resume(&dev->dev);
|
||||
}
|
||||
static struct platform_driver atml_drv = {
|
||||
.driver = {
|
||||
.name = "tpm_atmel",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.suspend = tpm_atml_suspend,
|
||||
.resume = tpm_atml_resume,
|
||||
};
|
||||
|
||||
static int __init init_atmel(void)
|
||||
@@ -184,7 +194,7 @@ static int __init init_atmel(void)
|
||||
unsigned long base;
|
||||
struct tpm_chip *chip;
|
||||
|
||||
rc = driver_register(&atml_drv);
|
||||
rc = platform_driver_register(&atml_drv);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
@@ -223,13 +233,13 @@ err_rel_reg:
|
||||
atmel_release_region(base,
|
||||
region_size);
|
||||
err_unreg_drv:
|
||||
driver_unregister(&atml_drv);
|
||||
platform_driver_unregister(&atml_drv);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void __exit cleanup_atmel(void)
|
||||
{
|
||||
driver_unregister(&atml_drv);
|
||||
platform_driver_unregister(&atml_drv);
|
||||
atml_plat_remove();
|
||||
}
|
||||
|
||||
|
@@ -654,12 +654,22 @@ module_param_string(hid, tpm_pnp_tbl[TIS_HID_USR_IDX].id,
|
||||
sizeof(tpm_pnp_tbl[TIS_HID_USR_IDX].id), 0444);
|
||||
MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe");
|
||||
|
||||
static struct device_driver tis_drv = {
|
||||
.name = "tpm_tis",
|
||||
.bus = &platform_bus_type,
|
||||
.owner = THIS_MODULE,
|
||||
.suspend = tpm_pm_suspend,
|
||||
.resume = tpm_pm_resume,
|
||||
static int tpm_tis_suspend(struct platform_device *dev, pm_message_t msg)
|
||||
{
|
||||
return tpm_pm_suspend(&dev->dev, msg);
|
||||
}
|
||||
|
||||
static int tpm_tis_resume(struct platform_device *dev)
|
||||
{
|
||||
return tpm_pm_resume(&dev->dev);
|
||||
}
|
||||
static struct platform_driver tis_drv = {
|
||||
.driver = {
|
||||
.name = "tpm_tis",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.suspend = tpm_tis_suspend,
|
||||
.resume = tpm_tis_resume,
|
||||
};
|
||||
|
||||
static struct platform_device *pdev;
|
||||
@@ -672,14 +682,14 @@ static int __init init_tis(void)
|
||||
int rc;
|
||||
|
||||
if (force) {
|
||||
rc = driver_register(&tis_drv);
|
||||
rc = platform_driver_register(&tis_drv);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
if (IS_ERR(pdev=platform_device_register_simple("tpm_tis", -1, NULL, 0)))
|
||||
return PTR_ERR(pdev);
|
||||
if((rc=tpm_tis_init(&pdev->dev, TIS_MEM_BASE, TIS_MEM_LEN, 0)) != 0) {
|
||||
platform_device_unregister(pdev);
|
||||
driver_unregister(&tis_drv);
|
||||
platform_driver_unregister(&tis_drv);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
@@ -711,7 +721,7 @@ static void __exit cleanup_tis(void)
|
||||
|
||||
if (force) {
|
||||
platform_device_unregister(pdev);
|
||||
driver_unregister(&tis_drv);
|
||||
platform_driver_unregister(&tis_drv);
|
||||
} else
|
||||
pnp_unregister_driver(&tis_pnp_driver);
|
||||
}
|
||||
|
@@ -479,18 +479,18 @@ static const struct file_operations vcs_fops = {
|
||||
|
||||
static struct class *vc_class;
|
||||
|
||||
void vcs_make_sysfs(struct tty_struct *tty)
|
||||
void vcs_make_sysfs(int index)
|
||||
{
|
||||
device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 1), NULL,
|
||||
"vcs%u", tty->index + 1);
|
||||
device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 129), NULL,
|
||||
"vcsa%u", tty->index + 1);
|
||||
device_create(vc_class, NULL, MKDEV(VCS_MAJOR, index + 1), NULL,
|
||||
"vcs%u", index + 1);
|
||||
device_create(vc_class, NULL, MKDEV(VCS_MAJOR, index + 129), NULL,
|
||||
"vcsa%u", index + 1);
|
||||
}
|
||||
|
||||
void vcs_remove_sysfs(struct tty_struct *tty)
|
||||
void vcs_remove_sysfs(int index)
|
||||
{
|
||||
device_destroy(vc_class, MKDEV(VCS_MAJOR, tty->index + 1));
|
||||
device_destroy(vc_class, MKDEV(VCS_MAJOR, tty->index + 129));
|
||||
device_destroy(vc_class, MKDEV(VCS_MAJOR, index + 1));
|
||||
device_destroy(vc_class, MKDEV(VCS_MAJOR, index + 129));
|
||||
}
|
||||
|
||||
int __init vcs_init(void)
|
||||
|
@@ -778,6 +778,7 @@ int vc_allocate(unsigned int currcons) /* return 0 on success */
|
||||
}
|
||||
vc->vc_kmalloced = 1;
|
||||
vc_init(vc, vc->vc_rows, vc->vc_cols, 1);
|
||||
vcs_make_sysfs(currcons);
|
||||
atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m);
|
||||
}
|
||||
return 0;
|
||||
@@ -987,7 +988,9 @@ void vc_deallocate(unsigned int currcons)
|
||||
if (vc_cons_allocated(currcons)) {
|
||||
struct vc_data *vc = vc_cons[currcons].d;
|
||||
struct vt_notifier_param param = { .vc = vc };
|
||||
|
||||
atomic_notifier_call_chain(&vt_notifier_list, VT_DEALLOCATE, ¶m);
|
||||
vcs_remove_sysfs(currcons);
|
||||
vc->vc_sw->con_deinit(vc);
|
||||
put_pid(vc->vt_pid);
|
||||
module_put(vc->vc_sw->owner);
|
||||
@@ -2775,7 +2778,6 @@ static int con_open(struct tty_struct *tty, struct file *filp)
|
||||
tty->termios->c_iflag |= IUTF8;
|
||||
else
|
||||
tty->termios->c_iflag &= ~IUTF8;
|
||||
vcs_make_sysfs(tty);
|
||||
release_console_sem();
|
||||
return ret;
|
||||
}
|
||||
@@ -2795,7 +2797,6 @@ static void con_shutdown(struct tty_struct *tty)
|
||||
BUG_ON(vc == NULL);
|
||||
acquire_console_sem();
|
||||
vc->vc_tty = NULL;
|
||||
vcs_remove_sysfs(tty);
|
||||
release_console_sem();
|
||||
tty_shutdown(tty);
|
||||
}
|
||||
|
Reference in New Issue
Block a user