mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Char/Misc driver patches for 4.3-rc1
Here's the "big" char/misc driver update for 4.3-rc1. Not much really interesting here, just a number of little changes all over the place, and some nice consolidation of the nvmem drivers to a common framework. As usual, the mei drivers stand out as the largest "churn" to handle new devices and features in their hardware. All have been in linux-next for a while with no issues. Signed-off-by: Greg Kroah-Hartman <[email protected]> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEABECAAYFAlXV844ACgkQMUfUDdst+ymYfQCgmDKjq3fsVHCxNZPxnukFYzvb xZkAnRb8fuub5gVQFP29A+rhyiuWD13v =Bq9K -----END PGP SIGNATURE----- Merge tag 'char-misc-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc Pull char/misc driver patches from Greg KH: "Here's the "big" char/misc driver update for 4.3-rc1. Not much really interesting here, just a number of little changes all over the place, and some nice consolidation of the nvmem drivers to a common framework. As usual, the mei drivers stand out as the largest "churn" to handle new devices and features in their hardware. All have been in linux-next for a while with no issues" * tag 'char-misc-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (136 commits) auxdisplay: ks0108: initialize local parport variable extcon: palmas: Fix build break due to devm_gpiod_get_optional API change extcon: palmas: Support GPIO based USB ID detection extcon: Fix signedness bugs about break error handling extcon: Drop owner assignment from i2c_driver extcon: arizona: Simplify pdata symantics for micd_dbtime extcon: arizona: Declare 3-pole jack if we detect open circuit on mic extcon: Add exception handling to prevent the NULL pointer access extcon: arizona: Ensure variables are set for headphone detection extcon: arizona: Use gpiod inteface to handle micd_pol_gpio gpio extcon: arizona: Add basic microphone detection DT/ACPI bindings extcon: arizona: Update to use the new device properties API extcon: palmas: Remove the mutually_exclusive array extcon: Remove optional print_state() function pointer of struct extcon_dev extcon: Remove duplicate header file in extcon.h extcon: max77843: Clear IRQ bits state before request IRQ toshiba laptop: replace ioremap_cache with ioremap misc: eeprom: max6875: clean up max6875_read() misc: eeprom: clean up eeprom_read() misc: eeprom: 93xx46: clean up eeprom_93xx46_bin_read/write ...
This commit is contained in:
commit
1c00038c76
136 changed files with 6021 additions and 1808 deletions
|
|
@ -213,7 +213,7 @@ struct synthvid_msg {
|
|||
|
||||
struct hvfb_par {
|
||||
struct fb_info *info;
|
||||
struct resource mem;
|
||||
struct resource *mem;
|
||||
bool fb_ready; /* fb device is ready */
|
||||
struct completion wait;
|
||||
u32 synthvid_version;
|
||||
|
|
@ -677,26 +677,18 @@ static void hvfb_get_option(struct fb_info *info)
|
|||
|
||||
|
||||
/* Get framebuffer memory from Hyper-V video pci space */
|
||||
static int hvfb_getmem(struct fb_info *info)
|
||||
static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
|
||||
{
|
||||
struct hvfb_par *par = info->par;
|
||||
struct pci_dev *pdev = NULL;
|
||||
void __iomem *fb_virt;
|
||||
int gen2vm = efi_enabled(EFI_BOOT);
|
||||
resource_size_t pot_start, pot_end;
|
||||
int ret;
|
||||
|
||||
par->mem.name = KBUILD_MODNAME;
|
||||
par->mem.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
||||
if (gen2vm) {
|
||||
ret = allocate_resource(&hyperv_mmio, &par->mem,
|
||||
screen_fb_size,
|
||||
0, -1,
|
||||
screen_fb_size,
|
||||
NULL, NULL);
|
||||
if (ret != 0) {
|
||||
pr_err("Unable to allocate framebuffer memory\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
pot_start = 0;
|
||||
pot_end = -1;
|
||||
} else {
|
||||
pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
|
||||
PCI_DEVICE_ID_HYPERV_VIDEO, NULL);
|
||||
|
|
@ -709,16 +701,18 @@ static int hvfb_getmem(struct fb_info *info)
|
|||
pci_resource_len(pdev, 0) < screen_fb_size)
|
||||
goto err1;
|
||||
|
||||
par->mem.end = pci_resource_end(pdev, 0);
|
||||
par->mem.start = par->mem.end - screen_fb_size + 1;
|
||||
ret = request_resource(&pdev->resource[0], &par->mem);
|
||||
if (ret != 0) {
|
||||
pr_err("Unable to request framebuffer memory\n");
|
||||
goto err1;
|
||||
}
|
||||
pot_end = pci_resource_end(pdev, 0);
|
||||
pot_start = pot_end - screen_fb_size + 1;
|
||||
}
|
||||
|
||||
fb_virt = ioremap(par->mem.start, screen_fb_size);
|
||||
ret = vmbus_allocate_mmio(&par->mem, hdev, pot_start, pot_end,
|
||||
screen_fb_size, 0x100000, true);
|
||||
if (ret != 0) {
|
||||
pr_err("Unable to allocate framebuffer memory\n");
|
||||
goto err1;
|
||||
}
|
||||
|
||||
fb_virt = ioremap(par->mem->start, screen_fb_size);
|
||||
if (!fb_virt)
|
||||
goto err2;
|
||||
|
||||
|
|
@ -736,7 +730,7 @@ static int hvfb_getmem(struct fb_info *info)
|
|||
info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
|
||||
}
|
||||
|
||||
info->fix.smem_start = par->mem.start;
|
||||
info->fix.smem_start = par->mem->start;
|
||||
info->fix.smem_len = screen_fb_size;
|
||||
info->screen_base = fb_virt;
|
||||
info->screen_size = screen_fb_size;
|
||||
|
|
@ -749,7 +743,8 @@ static int hvfb_getmem(struct fb_info *info)
|
|||
err3:
|
||||
iounmap(fb_virt);
|
||||
err2:
|
||||
release_resource(&par->mem);
|
||||
release_mem_region(par->mem->start, screen_fb_size);
|
||||
par->mem = NULL;
|
||||
err1:
|
||||
if (!gen2vm)
|
||||
pci_dev_put(pdev);
|
||||
|
|
@ -763,7 +758,8 @@ static void hvfb_putmem(struct fb_info *info)
|
|||
struct hvfb_par *par = info->par;
|
||||
|
||||
iounmap(info->screen_base);
|
||||
release_resource(&par->mem);
|
||||
release_mem_region(par->mem->start, screen_fb_size);
|
||||
par->mem = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -794,7 +790,7 @@ static int hvfb_probe(struct hv_device *hdev,
|
|||
goto error1;
|
||||
}
|
||||
|
||||
ret = hvfb_getmem(info);
|
||||
ret = hvfb_getmem(hdev, info);
|
||||
if (ret) {
|
||||
pr_err("No memory for framebuffer\n");
|
||||
goto error2;
|
||||
|
|
|
|||
Loading…
Reference in a new issue