Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'driver-core-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6

* 'driver-core-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6:
drivers:misc: ti-st: fix unexpected UART close
drivers:misc: ti-st: free skb on firmware download
drivers:misc: ti-st: wait for completion at fail
drivers:misc: ti-st: reinit completion before send
drivers:misc: ti-st: fail-safe on wrong pkt type
drivers:misc: ti-st: reinit completion on ver read
drivers:misc:ti-st: platform hooks for chip states
drivers:misc: ti-st: avoid a misleading dbg msg
base/devres.c: quiet sparse noise about context imbalance
pti: add missing CONFIG_PCI dependency
drivers/base/devtmpfs.c: correct annotation of `setup_done'
driver core: fix kernel-doc warning in platform.c
firmware: fix google/gsmi.c build warning

+92 -5
+1
drivers/base/devres.c
··· 397 397 398 398 static int release_nodes(struct device *dev, struct list_head *first, 399 399 struct list_head *end, unsigned long flags) 400 + __releases(&dev->devres_lock) 400 401 { 401 402 LIST_HEAD(todo); 402 403 int cnt;
+1 -1
drivers/base/devtmpfs.c
··· 376 376 return err; 377 377 } 378 378 379 - static __initdata DECLARE_COMPLETION(setup_done); 379 + static DECLARE_COMPLETION(setup_done); 380 380 381 381 static int handle(const char *name, mode_t mode, struct device *dev) 382 382 {
+1 -1
drivers/base/platform.c
··· 33 33 34 34 /** 35 35 * arch_setup_pdev_archdata - Allow manipulation of archdata before its used 36 - * @dev: platform device 36 + * @pdev: platform device 37 37 * 38 38 * This is called before platform_device_add() such that any pdev_archdata may 39 39 * be setup before the platform_notifier is called. So if a user needs to
+1 -1
drivers/firmware/google/gsmi.c
··· 420 420 421 421 static efi_status_t gsmi_set_variable(efi_char16_t *name, 422 422 efi_guid_t *vendor, 423 - unsigned long attr, 423 + u32 attr, 424 424 unsigned long data_size, 425 425 void *data) 426 426 {
+1
drivers/misc/Kconfig
··· 146 146 147 147 config INTEL_MID_PTI 148 148 tristate "Parallel Trace Interface for MIPI P1149.7 cJTAG standard" 149 + depends on PCI 149 150 default n 150 151 help 151 152 The PTI (Parallel Trace Interface) driver directs
+9 -1
drivers/misc/ti-st/st_core.c
··· 338 338 /* Unknow packet? */ 339 339 default: 340 340 type = *ptr; 341 + if (st_gdata->list[type] == NULL) { 342 + pr_err("chip/interface misbehavior dropping" 343 + " frame starting with 0x%02x", type); 344 + goto done; 345 + 346 + } 341 347 st_gdata->rx_skb = alloc_skb( 342 348 st_gdata->list[type]->max_frame_size, 343 349 GFP_ATOMIC); ··· 360 354 ptr++; 361 355 count--; 362 356 } 357 + done: 363 358 spin_unlock_irqrestore(&st_gdata->lock, flags); 364 359 pr_debug("done %s", __func__); 365 360 return; ··· 724 717 */ 725 718 spin_lock_irqsave(&st_gdata->lock, flags); 726 719 for (i = ST_BT; i < ST_MAX_CHANNELS; i++) { 727 - if (st_gdata->list[i] != NULL) 720 + if (st_gdata->is_registered[i] == true) 728 721 pr_err("%d not un-registered", i); 729 722 st_gdata->list[i] = NULL; 723 + st_gdata->is_registered[i] = false; 730 724 } 731 725 st_gdata->protos_registered = 0; 732 726 spin_unlock_irqrestore(&st_gdata->lock, flags);
+33
drivers/misc/ti-st/st_kim.c
··· 68 68 if (unlikely(skb->data[5] != 0)) { 69 69 pr_err("no proper response during fw download"); 70 70 pr_err("data6 %x", skb->data[5]); 71 + kfree_skb(skb); 71 72 return; /* keep waiting for the proper response */ 72 73 } 73 74 /* becos of all the script being downloaded */ ··· 211 210 pr_err(" waiting for ver info- timed out "); 212 211 return -ETIMEDOUT; 213 212 } 213 + INIT_COMPLETION(kim_gdata->kim_rcvd); 214 214 215 215 version = 216 216 MAKEWORD(kim_gdata->resp_buffer[13], ··· 300 298 301 299 switch (((struct bts_action *)ptr)->type) { 302 300 case ACTION_SEND_COMMAND: /* action send */ 301 + pr_debug("S"); 303 302 action_ptr = &(((struct bts_action *)ptr)->data[0]); 304 303 if (unlikely 305 304 (((struct hci_command *)action_ptr)->opcode == ··· 338 335 release_firmware(kim_gdata->fw_entry); 339 336 return -ETIMEDOUT; 340 337 } 338 + /* reinit completion before sending for the 339 + * relevant wait 340 + */ 341 + INIT_COMPLETION(kim_gdata->kim_rcvd); 341 342 342 343 /* 343 344 * Free space found in uart buffer, call st_int_write ··· 368 361 } 369 362 break; 370 363 case ACTION_WAIT_EVENT: /* wait */ 364 + pr_debug("W"); 371 365 if (!wait_for_completion_timeout 372 366 (&kim_gdata->kim_rcvd, 373 367 msecs_to_jiffies(CMD_RESP_TIME))) { ··· 442 434 { 443 435 long err = 0; 444 436 long retry = POR_RETRY_COUNT; 437 + struct ti_st_plat_data *pdata; 445 438 struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; 446 439 447 440 pr_info(" %s", __func__); 441 + pdata = kim_gdata->kim_pdev->dev.platform_data; 448 442 449 443 do { 444 + /* platform specific enabling code here */ 445 + if (pdata->chip_enable) 446 + pdata->chip_enable(kim_gdata); 447 + 450 448 /* Configure BT nShutdown to HIGH state */ 451 449 gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); 452 450 mdelay(5); /* FIXME: a proper toggle */ ··· 474 460 pr_info("ldisc_install = 0"); 475 461 sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, 476 462 NULL, "install"); 463 + /* the following wait is never going to be completed, 464 + * since the ldisc was never installed, hence serving 465 + * as a mdelay of LDISC_TIME msecs */ 466 + err = wait_for_completion_timeout 467 + (&kim_gdata->ldisc_installed, 468 + msecs_to_jiffies(LDISC_TIME)); 477 469 err = -ETIMEDOUT; 478 470 continue; 479 471 } else { ··· 492 472 pr_info("ldisc_install = 0"); 493 473 sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, 494 474 NULL, "install"); 475 + /* this wait might be completed, though in the 476 + * tty_close() since the ldisc is already 477 + * installed */ 478 + err = wait_for_completion_timeout 479 + (&kim_gdata->ldisc_installed, 480 + msecs_to_jiffies(LDISC_TIME)); 481 + err = -EINVAL; 495 482 continue; 496 483 } else { /* on success don't retry */ 497 484 break; ··· 516 489 { 517 490 long err = 0; 518 491 struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; 492 + struct ti_st_plat_data *pdata = 493 + kim_gdata->kim_pdev->dev.platform_data; 519 494 520 495 INIT_COMPLETION(kim_gdata->ldisc_installed); 521 496 ··· 544 515 gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH); 545 516 mdelay(1); 546 517 gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); 518 + 519 + /* platform specific disable */ 520 + if (pdata->chip_disable) 521 + pdata->chip_disable(kim_gdata); 547 522 return err; 548 523 } 549 524
+19
drivers/misc/ti-st/st_ll.c
··· 22 22 #define pr_fmt(fmt) "(stll) :" fmt 23 23 #include <linux/skbuff.h> 24 24 #include <linux/module.h> 25 + #include <linux/platform_device.h> 25 26 #include <linux/ti_wilink_st.h> 26 27 27 28 /**********************************************************************/ ··· 38 37 39 38 static void ll_device_want_to_sleep(struct st_data_s *st_data) 40 39 { 40 + struct kim_data_s *kim_data; 41 + struct ti_st_plat_data *pdata; 42 + 41 43 pr_debug("%s", __func__); 42 44 /* sanity check */ 43 45 if (st_data->ll_state != ST_LL_AWAKE) ··· 50 46 send_ll_cmd(st_data, LL_SLEEP_ACK); 51 47 /* update state */ 52 48 st_data->ll_state = ST_LL_ASLEEP; 49 + 50 + /* communicate to platform about chip asleep */ 51 + kim_data = st_data->kim_data; 52 + pdata = kim_data->kim_pdev->dev.platform_data; 53 + if (pdata->chip_asleep) 54 + pdata->chip_asleep(NULL); 53 55 } 54 56 55 57 static void ll_device_want_to_wakeup(struct st_data_s *st_data) 56 58 { 59 + struct kim_data_s *kim_data; 60 + struct ti_st_plat_data *pdata; 61 + 57 62 /* diff actions in diff states */ 58 63 switch (st_data->ll_state) { 59 64 case ST_LL_ASLEEP: ··· 83 70 } 84 71 /* update state */ 85 72 st_data->ll_state = ST_LL_AWAKE; 73 + 74 + /* communicate to platform about chip wakeup */ 75 + kim_data = st_data->kim_data; 76 + pdata = kim_data->kim_pdev->dev.platform_data; 77 + if (pdata->chip_asleep) 78 + pdata->chip_awake(NULL); 86 79 } 87 80 88 81 /**********************************************************************/