Lines Matching refs:chip
45 struct tpm_chip *pos, *chip = NULL; in tpm_chip_find_get() local
53 chip = pos; in tpm_chip_find_get()
58 return chip; in tpm_chip_find_get()
69 struct tpm_chip *chip = container_of(dev, struct tpm_chip, dev); in tpm_dev_release() local
72 clear_bit(chip->dev_num, dev_mask); in tpm_dev_release()
74 kfree(chip); in tpm_dev_release()
90 struct tpm_chip *chip; in tpmm_chip_alloc() local
92 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in tpmm_chip_alloc()
93 if (chip == NULL) in tpmm_chip_alloc()
96 mutex_init(&chip->tpm_mutex); in tpmm_chip_alloc()
97 INIT_LIST_HEAD(&chip->list); in tpmm_chip_alloc()
99 chip->ops = ops; in tpmm_chip_alloc()
102 chip->dev_num = find_first_zero_bit(dev_mask, TPM_NUM_DEVICES); in tpmm_chip_alloc()
105 if (chip->dev_num >= TPM_NUM_DEVICES) { in tpmm_chip_alloc()
107 kfree(chip); in tpmm_chip_alloc()
111 set_bit(chip->dev_num, dev_mask); in tpmm_chip_alloc()
113 scnprintf(chip->devname, sizeof(chip->devname), "tpm%d", chip->dev_num); in tpmm_chip_alloc()
115 chip->pdev = dev; in tpmm_chip_alloc()
117 dev_set_drvdata(dev, chip); in tpmm_chip_alloc()
119 chip->dev.class = tpm_class; in tpmm_chip_alloc()
120 chip->dev.release = tpm_dev_release; in tpmm_chip_alloc()
121 chip->dev.parent = chip->pdev; in tpmm_chip_alloc()
123 if (chip->dev_num == 0) in tpmm_chip_alloc()
124 chip->dev.devt = MKDEV(MISC_MAJOR, TPM_MINOR); in tpmm_chip_alloc()
126 chip->dev.devt = MKDEV(MAJOR(tpm_devt), chip->dev_num); in tpmm_chip_alloc()
128 dev_set_name(&chip->dev, "%s", chip->devname); in tpmm_chip_alloc()
130 device_initialize(&chip->dev); in tpmm_chip_alloc()
132 cdev_init(&chip->cdev, &tpm_fops); in tpmm_chip_alloc()
133 chip->cdev.owner = chip->pdev->driver->owner; in tpmm_chip_alloc()
134 chip->cdev.kobj.parent = &chip->dev.kobj; in tpmm_chip_alloc()
136 return chip; in tpmm_chip_alloc()
140 static int tpm_dev_add_device(struct tpm_chip *chip) in tpm_dev_add_device() argument
144 rc = cdev_add(&chip->cdev, chip->dev.devt, 1); in tpm_dev_add_device()
146 dev_err(&chip->dev, in tpm_dev_add_device()
148 chip->devname, MAJOR(chip->dev.devt), in tpm_dev_add_device()
149 MINOR(chip->dev.devt), rc); in tpm_dev_add_device()
151 device_unregister(&chip->dev); in tpm_dev_add_device()
155 rc = device_add(&chip->dev); in tpm_dev_add_device()
157 dev_err(&chip->dev, in tpm_dev_add_device()
159 chip->devname, MAJOR(chip->dev.devt), in tpm_dev_add_device()
160 MINOR(chip->dev.devt), rc); in tpm_dev_add_device()
168 static void tpm_dev_del_device(struct tpm_chip *chip) in tpm_dev_del_device() argument
170 cdev_del(&chip->cdev); in tpm_dev_del_device()
171 device_unregister(&chip->dev); in tpm_dev_del_device()
174 static int tpm1_chip_register(struct tpm_chip *chip) in tpm1_chip_register() argument
178 if (chip->flags & TPM_CHIP_FLAG_TPM2) in tpm1_chip_register()
181 rc = tpm_sysfs_add_device(chip); in tpm1_chip_register()
185 rc = tpm_add_ppi(chip); in tpm1_chip_register()
187 tpm_sysfs_del_device(chip); in tpm1_chip_register()
191 chip->bios_dir = tpm_bios_log_setup(chip->devname); in tpm1_chip_register()
196 static void tpm1_chip_unregister(struct tpm_chip *chip) in tpm1_chip_unregister() argument
198 if (chip->flags & TPM_CHIP_FLAG_TPM2) in tpm1_chip_unregister()
201 if (chip->bios_dir) in tpm1_chip_unregister()
202 tpm_bios_log_teardown(chip->bios_dir); in tpm1_chip_unregister()
204 tpm_remove_ppi(chip); in tpm1_chip_unregister()
206 tpm_sysfs_del_device(chip); in tpm1_chip_unregister()
220 int tpm_chip_register(struct tpm_chip *chip) in tpm_chip_register() argument
224 rc = tpm1_chip_register(chip); in tpm_chip_register()
228 rc = tpm_dev_add_device(chip); in tpm_chip_register()
234 list_add_rcu(&chip->list, &tpm_chip_list); in tpm_chip_register()
237 chip->flags |= TPM_CHIP_FLAG_REGISTERED; in tpm_chip_register()
241 tpm1_chip_unregister(chip); in tpm_chip_register()
256 void tpm_chip_unregister(struct tpm_chip *chip) in tpm_chip_unregister() argument
258 if (!(chip->flags & TPM_CHIP_FLAG_REGISTERED)) in tpm_chip_unregister()
262 list_del_rcu(&chip->list); in tpm_chip_unregister()
266 tpm1_chip_unregister(chip); in tpm_chip_unregister()
267 tpm_dev_del_device(chip); in tpm_chip_unregister()