Merge tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 21 Jan 2016 01:30:20 +0000 (17:30 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 21 Jan 2016 01:30:20 +0000 (17:30 -0800)
Pull asm-generic updates from Arnd Bergmann:
 "The asm-generic tree this time contains one series from Nicolas Pitre
  that makes the optimized do_div() implementation from the ARM
  architecture available to all architectures.

  This also adds stricter type checking for callers of do_div, which has
  uncovered a number of bugs in existing code, and fixes up the ones we
  have found"

* tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
  ARM: asm/div64.h: adjust to generic codde
  __div64_32(): make it overridable at compile time
  __div64_const32(): abstract out the actual 128-bit cross product code
  do_div(): generic optimization for constant divisor on 32-bit machines
  div64.h: optimize do_div() for power-of-two constant divisors
  mtd/sm_ftl.c: fix wrong do_div() usage
  drm/mgag200/mgag200_mode.c: fix wrong do_div() usage
  hid-sensor-hub.c: fix wrong do_div() usage
  ti/fapll: fix wrong do_div() usage
  ti/clkt_dpll: fix wrong do_div() usage
  tegra/clk-divider: fix wrong do_div() usage
  imx/clk-pllv2: fix wrong do_div() usage
  imx/clk-pllv1: fix wrong do_div() usage
  nouveau/nvkm/subdev/clk/gk20a.c: fix wrong do_div() usage

1  2 
drivers/gpu/drm/mgag200/mgag200_mode.c
drivers/hid/hid-sensor-hub.c

@@@ -1538,7 -1538,7 +1538,7 @@@ static struct drm_encoder *mga_encoder_
        encoder->possible_crtcs = 0x1;
  
        drm_encoder_init(dev, encoder, &mga_encoder_encoder_funcs,
 -                       DRM_MODE_ENCODER_DAC);
 +                       DRM_MODE_ENCODER_DAC, NULL);
        drm_encoder_helper_add(encoder, &mga_encoder_helper_funcs);
  
        return encoder;
@@@ -1564,7 -1564,7 +1564,7 @@@ static uint32_t mga_vga_calculate_mode_
                                                        int bits_per_pixel)
  {
        uint32_t total_area, divisor;
-       int64_t active_area, pixels_per_second, bandwidth;
+       uint64_t active_area, pixels_per_second, bandwidth;
        uint64_t bytes_per_pixel = (bits_per_pixel + 7) / 8;
  
        divisor = 1024;
@@@ -1684,13 -1684,13 +1684,13 @@@ static void mga_connector_destroy(struc
        kfree(connector);
  }
  
 -struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
 +static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = {
        .get_modes = mga_vga_get_modes,
        .mode_valid = mga_vga_mode_valid,
        .best_encoder = mga_connector_best_encoder,
  };
  
 -struct drm_connector_funcs mga_vga_connector_funcs = {
 +static const struct drm_connector_funcs mga_vga_connector_funcs = {
        .dpms = drm_helper_connector_dpms,
        .detect = mga_vga_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
@@@ -218,7 -218,8 +218,8 @@@ int sensor_hub_set_feature(struct hid_s
                goto done_proc;
        }
  
-       remaining_bytes = do_div(buffer_size, sizeof(__s32));
+       remaining_bytes = buffer_size % sizeof(__s32);
+       buffer_size = buffer_size / sizeof(__s32);
        if (buffer_size) {
                for (i = 0; i < buffer_size; ++i) {
                        hid_set_field(report->field[field_index], i,
@@@ -794,9 -795,6 +795,9 @@@ static const struct hid_device_id senso
        { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_ITE,
                        USB_DEVICE_ID_ITE_LENOVO_YOGA2),
                        .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
 +      { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_ITE,
 +                      USB_DEVICE_ID_ITE_LENOVO_YOGA900),
 +                      .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
        { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, HID_ANY_ID,
                     HID_ANY_ID) },
        { }