forked from luck/tmp_suning_uos_patched
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Mainline had UFO fixes, but UFO is removed in net-next so we take the HEAD hunks. Minor context conflict in bcmsysport statistics bug fix. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
3b2b69efec
|
@ -459,7 +459,7 @@ pin controller?
|
|||
|
||||
This is done by registering "ranges" of pins, which are essentially
|
||||
cross-reference tables. These are described in
|
||||
Documentation/pinctrl.txt
|
||||
Documentation/driver-api/pinctl.rst
|
||||
|
||||
While the pin allocation is totally managed by the pinctrl subsystem,
|
||||
gpio (under gpiolib) is still maintained by gpio drivers. It may happen
|
||||
|
|
|
@ -10395,7 +10395,7 @@ L: linux-gpio@vger.kernel.org
|
|||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pinctrl/
|
||||
F: Documentation/pinctrl.txt
|
||||
F: Documentation/driver-api/pinctl.rst
|
||||
F: drivers/pinctrl/
|
||||
F: include/linux/pinctrl/
|
||||
|
||||
|
|
|
@ -47,10 +47,26 @@
|
|||
#define SUN4V_CHIP_NIAGARA5 0x05
|
||||
#define SUN4V_CHIP_SPARC_M6 0x06
|
||||
#define SUN4V_CHIP_SPARC_M7 0x07
|
||||
#define SUN4V_CHIP_SPARC_M8 0x08
|
||||
#define SUN4V_CHIP_SPARC64X 0x8a
|
||||
#define SUN4V_CHIP_SPARC_SN 0x8b
|
||||
#define SUN4V_CHIP_UNKNOWN 0xff
|
||||
|
||||
/*
|
||||
* The following CPU_ID_xxx constants are used
|
||||
* to identify the CPU type in the setup phase
|
||||
* (see head_64.S)
|
||||
*/
|
||||
#define CPU_ID_NIAGARA1 ('1')
|
||||
#define CPU_ID_NIAGARA2 ('2')
|
||||
#define CPU_ID_NIAGARA3 ('3')
|
||||
#define CPU_ID_NIAGARA4 ('4')
|
||||
#define CPU_ID_NIAGARA5 ('5')
|
||||
#define CPU_ID_M6 ('6')
|
||||
#define CPU_ID_M7 ('7')
|
||||
#define CPU_ID_M8 ('8')
|
||||
#define CPU_ID_SONOMA1 ('N')
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
enum ultra_tlb_layout {
|
||||
|
|
|
@ -506,6 +506,12 @@ static void __init sun4v_cpu_probe(void)
|
|||
sparc_pmu_type = "sparc-m7";
|
||||
break;
|
||||
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
sparc_cpu_type = "SPARC-M8";
|
||||
sparc_fpu_type = "SPARC-M8 integrated FPU";
|
||||
sparc_pmu_type = "sparc-m8";
|
||||
break;
|
||||
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
sparc_cpu_type = "SPARC-SN";
|
||||
sparc_fpu_type = "SPARC-SN integrated FPU";
|
||||
|
|
|
@ -328,6 +328,7 @@ static int iterate_cpu(struct cpuinfo_tree *t, unsigned int root_index)
|
|||
case SUN4V_CHIP_NIAGARA5:
|
||||
case SUN4V_CHIP_SPARC_M6:
|
||||
case SUN4V_CHIP_SPARC_M7:
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
case SUN4V_CHIP_SPARC64X:
|
||||
rover_inc_table = niagara_iterate_method;
|
||||
|
|
|
@ -424,22 +424,25 @@ EXPORT_SYMBOL(sun4v_chip_type)
|
|||
nop
|
||||
|
||||
70: ldub [%g1 + 7], %g2
|
||||
cmp %g2, '3'
|
||||
cmp %g2, CPU_ID_NIAGARA3
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_NIAGARA3, %g4
|
||||
cmp %g2, '4'
|
||||
cmp %g2, CPU_ID_NIAGARA4
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_NIAGARA4, %g4
|
||||
cmp %g2, '5'
|
||||
cmp %g2, CPU_ID_NIAGARA5
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_NIAGARA5, %g4
|
||||
cmp %g2, '6'
|
||||
cmp %g2, CPU_ID_M6
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_SPARC_M6, %g4
|
||||
cmp %g2, '7'
|
||||
cmp %g2, CPU_ID_M7
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_SPARC_M7, %g4
|
||||
cmp %g2, 'N'
|
||||
cmp %g2, CPU_ID_M8
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_SPARC_M8, %g4
|
||||
cmp %g2, CPU_ID_SONOMA1
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_SPARC_SN, %g4
|
||||
ba,pt %xcc, 49f
|
||||
|
@ -448,10 +451,10 @@ EXPORT_SYMBOL(sun4v_chip_type)
|
|||
91: sethi %hi(prom_cpu_compatible), %g1
|
||||
or %g1, %lo(prom_cpu_compatible), %g1
|
||||
ldub [%g1 + 17], %g2
|
||||
cmp %g2, '1'
|
||||
cmp %g2, CPU_ID_NIAGARA1
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_NIAGARA1, %g4
|
||||
cmp %g2, '2'
|
||||
cmp %g2, CPU_ID_NIAGARA2
|
||||
be,pt %xcc, 5f
|
||||
mov SUN4V_CHIP_NIAGARA2, %g4
|
||||
|
||||
|
@ -600,6 +603,9 @@ niagara_tlb_fixup:
|
|||
be,pt %xcc, niagara4_patch
|
||||
nop
|
||||
cmp %g1, SUN4V_CHIP_SPARC_M7
|
||||
be,pt %xcc, niagara4_patch
|
||||
nop
|
||||
cmp %g1, SUN4V_CHIP_SPARC_M8
|
||||
be,pt %xcc, niagara4_patch
|
||||
nop
|
||||
cmp %g1, SUN4V_CHIP_SPARC_SN
|
||||
|
|
|
@ -288,10 +288,17 @@ static void __init sun4v_patch(void)
|
|||
|
||||
sun4v_patch_2insn_range(&__sun4v_2insn_patch,
|
||||
&__sun4v_2insn_patch_end);
|
||||
if (sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_SN)
|
||||
|
||||
switch (sun4v_chip_type) {
|
||||
case SUN4V_CHIP_SPARC_M7:
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
sun_m7_patch_2insn_range(&__sun_m7_2insn_patch,
|
||||
&__sun_m7_2insn_patch_end);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
sun4v_hvapi_init();
|
||||
}
|
||||
|
@ -529,6 +536,7 @@ static void __init init_sparc64_elf_hwcap(void)
|
|||
sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC64X)
|
||||
cap |= HWCAP_SPARC_BLKINIT;
|
||||
|
@ -538,6 +546,7 @@ static void __init init_sparc64_elf_hwcap(void)
|
|||
sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC64X)
|
||||
cap |= HWCAP_SPARC_N2;
|
||||
|
@ -568,6 +577,7 @@ static void __init init_sparc64_elf_hwcap(void)
|
|||
sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC64X)
|
||||
cap |= (AV_SPARC_VIS | AV_SPARC_VIS2 |
|
||||
|
@ -578,6 +588,7 @@ static void __init init_sparc64_elf_hwcap(void)
|
|||
sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
|
||||
sun4v_chip_type == SUN4V_CHIP_SPARC64X)
|
||||
cap |= (AV_SPARC_VIS3 | AV_SPARC_HPC |
|
||||
|
|
|
@ -1944,12 +1944,22 @@ static void __init setup_page_offset(void)
|
|||
break;
|
||||
case SUN4V_CHIP_SPARC_M7:
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
default:
|
||||
/* M7 and later support 52-bit virtual addresses. */
|
||||
sparc64_va_hole_top = 0xfff8000000000000UL;
|
||||
sparc64_va_hole_bottom = 0x0008000000000000UL;
|
||||
max_phys_bits = 49;
|
||||
break;
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
default:
|
||||
/* M8 and later support 54-bit virtual addresses.
|
||||
* However, restricting M8 and above VA bits to 53
|
||||
* as 4-level page table cannot support more than
|
||||
* 53 VA bits.
|
||||
*/
|
||||
sparc64_va_hole_top = 0xfff0000000000000UL;
|
||||
sparc64_va_hole_bottom = 0x0010000000000000UL;
|
||||
max_phys_bits = 51;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2161,6 +2171,7 @@ static void __init sun4v_linear_pte_xor_finalize(void)
|
|||
*/
|
||||
switch (sun4v_chip_type) {
|
||||
case SUN4V_CHIP_SPARC_M7:
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
pagecv_flag = 0x00;
|
||||
break;
|
||||
|
@ -2313,6 +2324,7 @@ void __init paging_init(void)
|
|||
*/
|
||||
switch (sun4v_chip_type) {
|
||||
case SUN4V_CHIP_SPARC_M7:
|
||||
case SUN4V_CHIP_SPARC_M8:
|
||||
case SUN4V_CHIP_SPARC_SN:
|
||||
page_cache4v_flag = _PAGE_CP_4V;
|
||||
break;
|
||||
|
|
|
@ -875,6 +875,56 @@ static void print_version(void)
|
|||
printk(KERN_INFO "%s", version);
|
||||
}
|
||||
|
||||
struct vdc_check_port_data {
|
||||
int dev_no;
|
||||
char *type;
|
||||
};
|
||||
|
||||
static int vdc_device_probed(struct device *dev, void *arg)
|
||||
{
|
||||
struct vio_dev *vdev = to_vio_dev(dev);
|
||||
struct vdc_check_port_data *port_data;
|
||||
|
||||
port_data = (struct vdc_check_port_data *)arg;
|
||||
|
||||
if ((vdev->dev_no == port_data->dev_no) &&
|
||||
(!(strcmp((char *)&vdev->type, port_data->type))) &&
|
||||
dev_get_drvdata(dev)) {
|
||||
/* This device has already been configured
|
||||
* by vdc_port_probe()
|
||||
*/
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Determine whether the VIO device is part of an mpgroup
|
||||
* by locating all the virtual-device-port nodes associated
|
||||
* with the parent virtual-device node for the VIO device
|
||||
* and checking whether any of these nodes are vdc-ports
|
||||
* which have already been configured.
|
||||
*
|
||||
* Returns true if this device is part of an mpgroup and has
|
||||
* already been probed.
|
||||
*/
|
||||
static bool vdc_port_mpgroup_check(struct vio_dev *vdev)
|
||||
{
|
||||
struct vdc_check_port_data port_data;
|
||||
struct device *dev;
|
||||
|
||||
port_data.dev_no = vdev->dev_no;
|
||||
port_data.type = (char *)&vdev->type;
|
||||
|
||||
dev = device_find_child(vdev->dev.parent, &port_data,
|
||||
vdc_device_probed);
|
||||
|
||||
if (dev)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
|
||||
{
|
||||
struct mdesc_handle *hp;
|
||||
|
@ -893,6 +943,14 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
|
|||
goto err_out_release_mdesc;
|
||||
}
|
||||
|
||||
/* Check if this device is part of an mpgroup */
|
||||
if (vdc_port_mpgroup_check(vdev)) {
|
||||
printk(KERN_WARNING
|
||||
"VIO: Ignoring extra vdisk port %s",
|
||||
dev_name(&vdev->dev));
|
||||
goto err_out_release_mdesc;
|
||||
}
|
||||
|
||||
port = kzalloc(sizeof(*port), GFP_KERNEL);
|
||||
err = -ENOMEM;
|
||||
if (!port) {
|
||||
|
@ -943,6 +1001,9 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
|
|||
if (err)
|
||||
goto err_out_free_tx_ring;
|
||||
|
||||
/* Note that the device driver_data is used to determine
|
||||
* whether the port has been probed.
|
||||
*/
|
||||
dev_set_drvdata(&vdev->dev, port);
|
||||
|
||||
mdesc_release(hp);
|
||||
|
|
|
@ -457,6 +457,8 @@ static void bcm_sysport_get_stats(struct net_device *dev,
|
|||
else
|
||||
p = (char *)priv;
|
||||
|
||||
if (priv->is_lite && !bcm_sysport_lite_stat_valid(s->type))
|
||||
continue;
|
||||
p += s->stat_offset;
|
||||
|
||||
if (s->stat_sizeof == sizeof(u64))
|
||||
|
|
|
@ -1099,7 +1099,7 @@ static int geneve_validate(struct nlattr *tb[], struct nlattr *data[],
|
|||
if (data[IFLA_GENEVE_ID]) {
|
||||
__u32 vni = nla_get_u32(data[IFLA_GENEVE_ID]);
|
||||
|
||||
if (vni >= GENEVE_VID_MASK)
|
||||
if (vni >= GENEVE_N_VID)
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1547,6 +1547,13 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
|
|||
DMI_MATCH(DMI_PRODUCT_FAMILY, "Intel_Strago"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "HP Chromebook 11 G5 (Setzer)",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "HP"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Setzer"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Acer Chromebook R11 (Cyan)",
|
||||
.matches = {
|
||||
|
|
|
@ -343,9 +343,9 @@ static const struct pinctrl_pin_desc mrfld_pins[] = {
|
|||
|
||||
static const unsigned int mrfld_sdio_pins[] = { 50, 51, 52, 53, 54, 55, 56 };
|
||||
static const unsigned int mrfld_spi5_pins[] = { 90, 91, 92, 93, 94, 95, 96 };
|
||||
static const unsigned int mrfld_uart0_pins[] = { 124, 125, 126, 127 };
|
||||
static const unsigned int mrfld_uart1_pins[] = { 128, 129, 130, 131 };
|
||||
static const unsigned int mrfld_uart2_pins[] = { 132, 133, 134, 135 };
|
||||
static const unsigned int mrfld_uart0_pins[] = { 115, 116, 117, 118 };
|
||||
static const unsigned int mrfld_uart1_pins[] = { 119, 120, 121, 122 };
|
||||
static const unsigned int mrfld_uart2_pins[] = { 123, 124, 125, 126 };
|
||||
static const unsigned int mrfld_pwm0_pins[] = { 144 };
|
||||
static const unsigned int mrfld_pwm1_pins[] = { 145 };
|
||||
static const unsigned int mrfld_pwm2_pins[] = { 132 };
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
#define IRQ_STATUS 0x10
|
||||
#define IRQ_WKUP 0x18
|
||||
|
||||
#define NB_FUNCS 2
|
||||
#define NB_FUNCS 3
|
||||
#define GPIO_PER_REG 32
|
||||
|
||||
/**
|
||||
|
@ -126,6 +126,16 @@ struct armada_37xx_pinctrl {
|
|||
.funcs = {_func1, "gpio"} \
|
||||
}
|
||||
|
||||
#define PIN_GRP_GPIO_3(_name, _start, _nr, _mask, _v1, _v2, _v3, _f1, _f2) \
|
||||
{ \
|
||||
.name = _name, \
|
||||
.start_pin = _start, \
|
||||
.npins = _nr, \
|
||||
.reg_mask = _mask, \
|
||||
.val = {_v1, _v2, _v3}, \
|
||||
.funcs = {_f1, _f2, "gpio"} \
|
||||
}
|
||||
|
||||
#define PIN_GRP_EXTRA(_name, _start, _nr, _mask, _v1, _v2, _start2, _nr2, \
|
||||
_f1, _f2) \
|
||||
{ \
|
||||
|
@ -171,12 +181,13 @@ static struct armada_37xx_pin_group armada_37xx_sb_groups[] = {
|
|||
PIN_GRP_GPIO("usb32_drvvbus0", 0, 1, BIT(0), "drvbus"),
|
||||
PIN_GRP_GPIO("usb2_drvvbus1", 1, 1, BIT(1), "drvbus"),
|
||||
PIN_GRP_GPIO("sdio_sb", 24, 6, BIT(2), "sdio"),
|
||||
PIN_GRP_EXTRA("rgmii", 6, 12, BIT(3), 0, BIT(3), 23, 1, "mii", "gpio"),
|
||||
PIN_GRP_GPIO("rgmii", 6, 12, BIT(3), "mii"),
|
||||
PIN_GRP_GPIO("pcie1", 3, 2, BIT(4), "pcie"),
|
||||
PIN_GRP_GPIO("ptp", 20, 3, BIT(5), "ptp"),
|
||||
PIN_GRP("ptp_clk", 21, 1, BIT(6), "ptp", "mii"),
|
||||
PIN_GRP("ptp_trig", 22, 1, BIT(7), "ptp", "mii"),
|
||||
PIN_GRP("mii_col", 23, 1, BIT(8), "mii", "mii_err"),
|
||||
PIN_GRP_GPIO_3("mii_col", 23, 1, BIT(8) | BIT(14), 0, BIT(8), BIT(14),
|
||||
"mii", "mii_err"),
|
||||
};
|
||||
|
||||
const struct armada_37xx_pin_data armada_37xx_pin_nb = {
|
||||
|
@ -187,7 +198,7 @@ const struct armada_37xx_pin_data armada_37xx_pin_nb = {
|
|||
};
|
||||
|
||||
const struct armada_37xx_pin_data armada_37xx_pin_sb = {
|
||||
.nr_pins = 29,
|
||||
.nr_pins = 30,
|
||||
.name = "GPIO2",
|
||||
.groups = armada_37xx_sb_groups,
|
||||
.ngroups = ARRAY_SIZE(armada_37xx_sb_groups),
|
||||
|
@ -208,7 +219,7 @@ static int armada_37xx_get_func_reg(struct armada_37xx_pin_group *grp,
|
|||
{
|
||||
int f;
|
||||
|
||||
for (f = 0; f < NB_FUNCS; f++)
|
||||
for (f = 0; (f < NB_FUNCS) && grp->funcs[f]; f++)
|
||||
if (!strcmp(grp->funcs[f], func))
|
||||
return f;
|
||||
|
||||
|
@ -795,7 +806,7 @@ static int armada_37xx_fill_group(struct armada_37xx_pinctrl *info)
|
|||
for (j = 0; j < grp->extra_npins; j++)
|
||||
grp->pins[i+j] = grp->extra_pin + j;
|
||||
|
||||
for (f = 0; f < NB_FUNCS; f++) {
|
||||
for (f = 0; (f < NB_FUNCS) && grp->funcs[f]; f++) {
|
||||
int ret;
|
||||
/* check for unique functions and count groups */
|
||||
ret = armada_37xx_add_function(info->funcs, &funcsize,
|
||||
|
@ -847,7 +858,7 @@ static int armada_37xx_fill_func(struct armada_37xx_pinctrl *info)
|
|||
struct armada_37xx_pin_group *gp = &info->groups[g];
|
||||
int f;
|
||||
|
||||
for (f = 0; f < NB_FUNCS; f++) {
|
||||
for (f = 0; (f < NB_FUNCS) && gp->funcs[f]; f++) {
|
||||
if (strcmp(gp->funcs[f], name) == 0) {
|
||||
*groups = gp->name;
|
||||
groups++;
|
||||
|
|
|
@ -918,6 +918,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
|
|||
SUNXI_FUNCTION_VARIANT(0x3, "emac", /* ETXD1 */
|
||||
PINCTRL_SUN7I_A20),
|
||||
SUNXI_FUNCTION(0x4, "keypad"), /* IN6 */
|
||||
SUNXI_FUNCTION(0x5, "sim"), /* DET */
|
||||
SUNXI_FUNCTION_IRQ(0x6, 16), /* EINT16 */
|
||||
SUNXI_FUNCTION(0x7, "csi1")), /* D16 */
|
||||
SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17),
|
||||
|
|
|
@ -1084,7 +1084,7 @@ static const unsigned usb1_pins[] = {182, 183};
|
|||
static const int usb1_muxvals[] = {0, 0};
|
||||
static const unsigned usb2_pins[] = {184, 185};
|
||||
static const int usb2_muxvals[] = {0, 0};
|
||||
static const unsigned usb3_pins[] = {186, 187};
|
||||
static const unsigned usb3_pins[] = {187, 188};
|
||||
static const int usb3_muxvals[] = {0, 0};
|
||||
static const unsigned port_range0_pins[] = {
|
||||
300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */
|
||||
|
|
|
@ -64,10 +64,8 @@ static int zx_set_mux(struct pinctrl_dev *pctldev, unsigned int func_selector,
|
|||
struct zx_pinctrl_soc_info *info = zpctl->info;
|
||||
const struct pinctrl_pin_desc *pindesc = info->pins + group_selector;
|
||||
struct zx_pin_data *data = pindesc->drv_data;
|
||||
struct zx_mux_desc *mux = data->muxes;
|
||||
u32 mask = (1 << data->width) - 1;
|
||||
u32 offset = data->offset;
|
||||
u32 bitpos = data->bitpos;
|
||||
struct zx_mux_desc *mux;
|
||||
u32 mask, offset, bitpos;
|
||||
struct function_desc *func;
|
||||
unsigned long flags;
|
||||
u32 val, mval;
|
||||
|
@ -76,6 +74,11 @@ static int zx_set_mux(struct pinctrl_dev *pctldev, unsigned int func_selector,
|
|||
if (!data)
|
||||
return -EINVAL;
|
||||
|
||||
mux = data->muxes;
|
||||
mask = (1 << data->width) - 1;
|
||||
offset = data->offset;
|
||||
bitpos = data->bitpos;
|
||||
|
||||
func = pinmux_generic_get_function(pctldev, func_selector);
|
||||
if (!func)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -843,7 +843,7 @@ struct dev_links_info {
|
|||
* hibernation, system resume and during runtime PM transitions
|
||||
* along with subsystem-level and driver-level callbacks.
|
||||
* @pins: For device pin management.
|
||||
* See Documentation/pinctrl.txt for details.
|
||||
* See Documentation/driver-api/pinctl.rst for details.
|
||||
* @msi_list: Hosts MSI descriptors
|
||||
* @msi_domain: The generic MSI domain this device is using.
|
||||
* @numa_node: NUMA node this device is close to.
|
||||
|
|
|
@ -81,8 +81,8 @@
|
|||
* it.
|
||||
* @PIN_CONFIG_OUTPUT: this will configure the pin as an output and drive a
|
||||
* value on the line. Use argument 1 to indicate high level, argument 0 to
|
||||
* indicate low level. (Please see Documentation/pinctrl.txt, section
|
||||
* "GPIO mode pitfalls" for a discussion around this parameter.)
|
||||
* indicate low level. (Please see Documentation/driver-api/pinctl.rst,
|
||||
* section "GPIO mode pitfalls" for a discussion around this parameter.)
|
||||
* @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power
|
||||
* supplies, the argument to this parameter (on a custom format) tells
|
||||
* the driver which alternative power source to use.
|
||||
|
|
|
@ -1725,6 +1725,13 @@ static __net_init int inet_init_net(struct net *net)
|
|||
net->ipv4.sysctl_ip_prot_sock = PROT_SOCK;
|
||||
#endif
|
||||
|
||||
/* Some igmp sysctl, whose values are always used */
|
||||
net->ipv4.sysctl_igmp_max_memberships = 20;
|
||||
net->ipv4.sysctl_igmp_max_msf = 10;
|
||||
/* IGMP reports for link-local multicast groups are enabled by default */
|
||||
net->ipv4.sysctl_igmp_llm_reports = 1;
|
||||
net->ipv4.sysctl_igmp_qrv = 2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2976,12 +2976,6 @@ static int __net_init igmp_net_init(struct net *net)
|
|||
goto out_sock;
|
||||
}
|
||||
|
||||
/* Sysctl initialization */
|
||||
net->ipv4.sysctl_igmp_max_memberships = 20;
|
||||
net->ipv4.sysctl_igmp_max_msf = 10;
|
||||
/* IGMP reports for link-local multicast groups are enabled by default */
|
||||
net->ipv4.sysctl_igmp_llm_reports = 1;
|
||||
net->ipv4.sysctl_igmp_qrv = 2;
|
||||
return 0;
|
||||
|
||||
out_sock:
|
||||
|
|
|
@ -809,7 +809,7 @@ static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4)
|
|||
if (is_udplite) /* UDP-Lite */
|
||||
csum = udplite_csum(skb);
|
||||
|
||||
else if (sk->sk_no_check_tx) { /* UDP csum disabled */
|
||||
else if (sk->sk_no_check_tx && !skb_is_gso(skb)) { /* UDP csum off */
|
||||
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
goto send;
|
||||
|
|
|
@ -3698,14 +3698,19 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv
|
|||
|
||||
if (optlen != sizeof(val))
|
||||
return -EINVAL;
|
||||
if (po->rx_ring.pg_vec || po->tx_ring.pg_vec)
|
||||
return -EBUSY;
|
||||
if (copy_from_user(&val, optval, sizeof(val)))
|
||||
return -EFAULT;
|
||||
if (val > INT_MAX)
|
||||
return -EINVAL;
|
||||
po->tp_reserve = val;
|
||||
return 0;
|
||||
lock_sock(sk);
|
||||
if (po->rx_ring.pg_vec || po->tx_ring.pg_vec) {
|
||||
ret = -EBUSY;
|
||||
} else {
|
||||
po->tp_reserve = val;
|
||||
ret = 0;
|
||||
}
|
||||
release_sock(sk);
|
||||
return ret;
|
||||
}
|
||||
case PACKET_LOSS:
|
||||
{
|
||||
|
|
|
@ -49,9 +49,9 @@ static int ipt_init_target(struct net *net, struct xt_entry_target *t,
|
|||
return PTR_ERR(target);
|
||||
|
||||
t->u.kernel.target = target;
|
||||
memset(&par, 0, sizeof(par));
|
||||
par.net = net;
|
||||
par.table = table;
|
||||
par.entryinfo = NULL;
|
||||
par.target = target;
|
||||
par.targinfo = t->data;
|
||||
par.hook_mask = hook;
|
||||
|
|
|
@ -1455,10 +1455,8 @@ static bool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb,
|
|||
/* Initiate synch mode if applicable */
|
||||
if ((usr == TUNNEL_PROTOCOL) && (mtyp == SYNCH_MSG) && (oseqno == 1)) {
|
||||
syncpt = iseqno + exp_pkts - 1;
|
||||
if (!tipc_link_is_up(l)) {
|
||||
tipc_link_fsm_evt(l, LINK_ESTABLISH_EVT);
|
||||
if (!tipc_link_is_up(l))
|
||||
__tipc_node_link_up(n, bearer_id, xmitq);
|
||||
}
|
||||
if (n->state == SELF_UP_PEER_UP) {
|
||||
n->sync_point = syncpt;
|
||||
tipc_link_fsm_evt(l, LINK_SYNCH_BEGIN_EVT);
|
||||
|
|
Loading…
Reference in New Issue
Block a user