kernel: update kernel 4.9 to 4.9.17

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2017-03-26 12:22:27 +02:00
parent 88b125e9a4
commit fb7ea71c15
52 changed files with 84 additions and 500 deletions

View file

@ -4,11 +4,11 @@ LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.4 = .56
LINUX_VERSION-4.9 = .14
LINUX_VERSION-4.9 = .17
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.4.56 = 55181e24869e4b550ef756eecd1ab4f6774228c457f4830e9e779c6db4c2a2b6
LINUX_KERNEL_HASH-4.9.14 = 534d343f4ca5c55d7214694a2a378897e8ee2adf576563f069da010093b3b640
LINUX_KERNEL_HASH-4.9.17 = 9095c16550ebae9cbe0979a706116d95fbd8d270c1068857c4a8788de0f9ac7f
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))

View file

@ -26,7 +26,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
vc4_hdmi.o \
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -163,6 +163,9 @@ int vc4_crtc_get_scanoutpos(struct drm_d
@@ -162,6 +162,9 @@ int vc4_crtc_get_scanoutpos(struct drm_d
int vblank_lines;
int ret = 0;
@ -36,7 +36,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
/* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */
/* Get optional system timestamp before query. */
@@ -656,6 +659,11 @@ int vc4_enable_vblank(struct drm_device
@@ -655,6 +658,11 @@ int vc4_enable_vblank(struct drm_device
struct vc4_dev *vc4 = to_vc4_dev(dev);
struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id];
@ -48,7 +48,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
CRTC_WRITE(PV_INTEN, PV_INT_VFP_START);
return 0;
@@ -666,6 +674,11 @@ void vc4_disable_vblank(struct drm_devic
@@ -665,6 +673,11 @@ void vc4_disable_vblank(struct drm_devic
struct vc4_dev *vc4 = to_vc4_dev(dev);
struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id];
@ -82,7 +82,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
struct vc4_hdmi *hdmi;
struct vc4_hvs *hvs;
struct vc4_crtc *crtc[3];
@@ -460,6 +463,10 @@ void __iomem *vc4_ioremap_regs(struct pl
@@ -462,6 +465,10 @@ void __iomem *vc4_ioremap_regs(struct pl
extern struct platform_driver vc4_dpi_driver;
int vc4_dpi_debugfs_regs(struct seq_file *m, void *unused);

View file

@ -1,27 +0,0 @@
From b8ded4dca34feafd33f22eff47d19b17b7dd83f4 Mon Sep 17 00:00:00 2001
From: Boris Brezillon <boris.brezillon@free-electrons.com>
Date: Tue, 22 Nov 2016 12:45:28 -0800
Subject: [PATCH] clk: bcm2835: Fix ->fixed_divider of pllh_aux
There is no fixed divider on pllh_aux.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit f2a46926aba1f0c33944901d2420a6a887455ddc)
---
drivers/clk/bcm/clk-bcm2835.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
@@ -1607,7 +1607,7 @@ static const struct bcm2835_clk_desc clk
.a2w_reg = A2W_PLLH_AUX,
.load_mask = CM_PLLH_LOADAUX,
.hold_mask = 0,
- .fixed_divider = 10),
+ .fixed_divider = 1),
[BCM2835_PLLH_PIX] = REGISTER_PLL_DIV(
.name = "pllh_pix",
.source_pll = "pllh",

View file

@ -39,7 +39,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
default:
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -384,6 +384,8 @@ struct vc4_validated_shader_info {
@@ -385,6 +385,8 @@ struct vc4_validated_shader_info {
uint32_t num_uniform_addr_offsets;
uint32_t *uniform_addr_offsets;

View file

@ -1,93 +0,0 @@
From d7f32f81cf7579ac7d13127db88e789ea864824c Mon Sep 17 00:00:00 2001
From: Derek Foreman <derekf@osg.samsung.com>
Date: Thu, 24 Nov 2016 12:11:55 -0600
Subject: [PATCH] drm/vc4: Fix race between page flip completion event and
clean-up
There was a small window where a userspace program could submit
a pageflip after receiving a pageflip completion event yet still
receive EBUSY.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
(cherry picked from commit 26fc78f6fef39b9d7a15def5e7e9826ff68303f4)
---
drivers/gpu/drm/vc4/vc4_crtc.c | 8 ++++++++
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
drivers/gpu/drm/vc4/vc4_kms.c | 33 +++++++++++++++++++++++++--------
3 files changed, 34 insertions(+), 8 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -682,6 +682,14 @@ void vc4_disable_vblank(struct drm_devic
CRTC_WRITE(PV_INTEN, 0);
}
+/* Must be called with the event lock held */
+bool vc4_event_pending(struct drm_crtc *crtc)
+{
+ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
+
+ return !!vc4_crtc->event;
+}
+
static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc)
{
struct drm_crtc *crtc = &vc4_crtc->base;
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -445,6 +445,7 @@ int vc4_bo_stats_debugfs(struct seq_file
extern struct platform_driver vc4_crtc_driver;
int vc4_enable_vblank(struct drm_device *dev, unsigned int crtc_id);
void vc4_disable_vblank(struct drm_device *dev, unsigned int crtc_id);
+bool vc4_event_pending(struct drm_crtc *crtc);
int vc4_crtc_debugfs_regs(struct seq_file *m, void *arg);
int vc4_crtc_get_scanoutpos(struct drm_device *dev, unsigned int crtc_id,
unsigned int flags, int *vpos, int *hpos,
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -119,17 +119,34 @@ static int vc4_atomic_commit(struct drm_
/* Make sure that any outstanding modesets have finished. */
if (nonblock) {
- ret = down_trylock(&vc4->async_modeset);
- if (ret) {
+ struct drm_crtc *crtc;
+ struct drm_crtc_state *crtc_state;
+ unsigned long flags;
+ bool busy = false;
+
+ /*
+ * If there's an undispatched event to send then we're
+ * obviously still busy. If there isn't, then we can
+ * unconditionally wait for the semaphore because it
+ * shouldn't be contended (for long).
+ *
+ * This is to prevent a race where queuing a new flip
+ * from userspace immediately on receipt of an event
+ * beats our clean-up and returns EBUSY.
+ */
+ spin_lock_irqsave(&dev->event_lock, flags);
+ for_each_crtc_in_state(state, crtc, crtc_state, i)
+ busy |= vc4_event_pending(crtc);
+ spin_unlock_irqrestore(&dev->event_lock, flags);
+ if (busy) {
kfree(c);
return -EBUSY;
}
- } else {
- ret = down_interruptible(&vc4->async_modeset);
- if (ret) {
- kfree(c);
- return ret;
- }
+ }
+ ret = down_interruptible(&vc4->async_modeset);
+ if (ret) {
+ kfree(c);
+ return ret;
}
ret = drm_atomic_helper_prepare_planes(dev, state);

View file

@ -1,113 +0,0 @@
From 3b162fdf85d89829d58bbee2d7d79987aceaa595 Mon Sep 17 00:00:00 2001
From: Boris Brezillon <boris.brezillon@free-electrons.com>
Date: Fri, 2 Dec 2016 14:48:07 +0100
Subject: [PATCH] drm/vc4: Fix ->clock_select setting for the VEC encoder
PV_CONTROL_CLK_SELECT_VEC is actually 2 and not 0. Fix the definition and
rework the vc4_set_crtc_possible_masks() to cover the full range of the
PV_CONTROL_CLK_SELECT field.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit ab8df60e3a3b68420d0d4477c5f07c00fbfb078b)
---
drivers/gpu/drm/vc4/vc4_crtc.c | 38 +++++++++++++++++++++++---------------
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
drivers/gpu/drm/vc4/vc4_regs.h | 3 ++-
3 files changed, 26 insertions(+), 16 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -83,8 +83,7 @@ struct vc4_crtc_data {
/* Which channel of the HVS this pixelvalve sources from. */
int hvs_channel;
- enum vc4_encoder_type encoder0_type;
- enum vc4_encoder_type encoder1_type;
+ enum vc4_encoder_type encoder_types[4];
};
#define CRTC_WRITE(offset, val) writel(val, vc4_crtc->regs + (offset))
@@ -880,20 +879,26 @@ static const struct drm_crtc_helper_func
static const struct vc4_crtc_data pv0_data = {
.hvs_channel = 0,
- .encoder0_type = VC4_ENCODER_TYPE_DSI0,
- .encoder1_type = VC4_ENCODER_TYPE_DPI,
+ .encoder_types = {
+ [PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI0,
+ [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_DPI,
+ },
};
static const struct vc4_crtc_data pv1_data = {
.hvs_channel = 2,
- .encoder0_type = VC4_ENCODER_TYPE_DSI1,
- .encoder1_type = VC4_ENCODER_TYPE_SMI,
+ .encoder_types = {
+ [PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI1,
+ [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_SMI,
+ },
};
static const struct vc4_crtc_data pv2_data = {
.hvs_channel = 1,
- .encoder0_type = VC4_ENCODER_TYPE_VEC,
- .encoder1_type = VC4_ENCODER_TYPE_HDMI,
+ .encoder_types = {
+ [PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_HDMI,
+ [PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC,
+ },
};
static const struct of_device_id vc4_crtc_dt_match[] = {
@@ -907,17 +912,20 @@ static void vc4_set_crtc_possible_masks(
struct drm_crtc *crtc)
{
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
+ const struct vc4_crtc_data *crtc_data = vc4_crtc->data;
+ const enum vc4_encoder_type *encoder_types = crtc_data->encoder_types;
struct drm_encoder *encoder;
drm_for_each_encoder(encoder, drm) {
struct vc4_encoder *vc4_encoder = to_vc4_encoder(encoder);
+ int i;
- if (vc4_encoder->type == vc4_crtc->data->encoder0_type) {
- vc4_encoder->clock_select = 0;
- encoder->possible_crtcs |= drm_crtc_mask(crtc);
- } else if (vc4_encoder->type == vc4_crtc->data->encoder1_type) {
- vc4_encoder->clock_select = 1;
- encoder->possible_crtcs |= drm_crtc_mask(crtc);
+ for (i = 0; i < ARRAY_SIZE(crtc_data->encoder_types); i++) {
+ if (vc4_encoder->type == encoder_types[i]) {
+ vc4_encoder->clock_select = i;
+ encoder->possible_crtcs |= drm_crtc_mask(crtc);
+ break;
+ }
}
}
}
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -197,6 +197,7 @@ to_vc4_plane(struct drm_plane *plane)
}
enum vc4_encoder_type {
+ VC4_ENCODER_TYPE_NONE,
VC4_ENCODER_TYPE_HDMI,
VC4_ENCODER_TYPE_VEC,
VC4_ENCODER_TYPE_DSI0,
--- a/drivers/gpu/drm/vc4/vc4_regs.h
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
@@ -177,8 +177,9 @@
# define PV_CONTROL_WAIT_HSTART BIT(12)
# define PV_CONTROL_PIXEL_REP_MASK VC4_MASK(5, 4)
# define PV_CONTROL_PIXEL_REP_SHIFT 4
-# define PV_CONTROL_CLK_SELECT_DSI_VEC 0
+# define PV_CONTROL_CLK_SELECT_DSI 0
# define PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI 1
+# define PV_CONTROL_CLK_SELECT_VEC 2
# define PV_CONTROL_CLK_SELECT_MASK VC4_MASK(3, 2)
# define PV_CONTROL_CLK_SELECT_SHIFT 2
# define PV_CONTROL_FIFO_CLR BIT(1)

View file

@ -1,6 +1,6 @@
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2002,7 +2002,8 @@ static void pcie_write_mrrs(struct pci_d
@@ -2003,7 +2003,8 @@ static void pcie_write_mrrs(struct pci_d
/* In the "safe" case, do not configure the MRRS. There appear to be
* issues with setting MRRS to 0 on a number of devices.
*/

View file

@ -81,7 +81,7 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
/* called under rcu_read_lock */
void br_flood(struct net_bridge *br, struct sk_buff *skb,
enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
@@ -241,10 +264,20 @@ void br_multicast_flood(struct net_bridg
@@ -242,10 +265,20 @@ void br_multicast_flood(struct net_bridg
rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
NULL;

View file

@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -232,7 +232,8 @@ static int br_handle_local_finish(struct
@@ -233,7 +233,8 @@ static int br_handle_local_finish(struct
{
struct net_bridge_port *p = br_port_get_rcu(skb->dev);
@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
br_pass_frame_up(skb);
@@ -315,6 +316,15 @@ rx_handler_result_t br_handle_frame(stru
@@ -316,6 +317,15 @@ rx_handler_result_t br_handle_frame(stru
forward:
switch (p->state) {

View file

@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -3230,6 +3232,7 @@ static int packet_create(struct net *net
@@ -3234,6 +3236,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
@@ -3809,6 +3812,16 @@ packet_setsockopt(struct socket *sock, i
@@ -3813,6 +3816,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
default:
return -ENOPROTOOPT;
}
@@ -3861,6 +3874,13 @@ static int packet_getsockopt(struct sock
@@ -3865,6 +3878,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;

View file

@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -163,11 +163,14 @@ int br_handle_frame_finish(struct net *n
@@ -164,11 +164,14 @@ int br_handle_frame_finish(struct net *n
}
}

View file

@ -54,7 +54,7 @@ Isolating individual bridge ports
continue;
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -174,6 +174,9 @@ int br_handle_frame_finish(struct net *n
@@ -175,6 +175,9 @@ int br_handle_frame_finish(struct net *n
if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
br_do_proxy_arp(skb, br, vid, p);

View file

@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4485,6 +4485,9 @@ static enum gro_result dev_gro_receive(s
@@ -4512,6 +4512,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int grow;
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
@@ -5762,6 +5765,48 @@ static void __netdev_adjacent_dev_unlink
@@ -5789,6 +5792,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info)
@@ -5960,6 +6005,8 @@ void netdev_upper_dev_unlink(struct net_
@@ -5987,6 +6032,8 @@ void netdev_upper_dev_unlink(struct net_
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
@@ -6560,6 +6607,7 @@ int dev_set_mac_address(struct net_devic
@@ -6587,6 +6634,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;

View file

@ -86,7 +86,7 @@
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2904,10 +2904,20 @@ static int xmit_one(struct sk_buff *skb,
@@ -2931,10 +2931,20 @@ static int xmit_one(struct sk_buff *skb,
if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
dev_queue_xmit_nit(skb, dev);

View file

@ -23,7 +23,7 @@
/* The Mellanox Tavor device gives false positive parity errors
* Mark this device with a broken_parity_status, to allow
* PCI scanning code to "skip" this now blacklisted device.
@@ -3015,6 +3016,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
@@ -3016,6 +3017,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
@ -31,7 +31,7 @@
/*
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To
@@ -3071,6 +3073,8 @@ static void fixup_debug_report(struct pc
@@ -3072,6 +3074,8 @@ static void fixup_debug_report(struct pc
}
}
@ -40,7 +40,7 @@
/*
* Some BIOS implementations leave the Intel GPU interrupts enabled,
* even though no one is handling them (f.e. i915 driver is never loaded).
@@ -3105,6 +3109,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
@@ -3106,6 +3110,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);

View file

@ -54,4 +54,3 @@ Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
static void __init get_krait_bin_format_a(int *speed, int *pvs, int *pvs_ver)
{

View file

@ -102,7 +102,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
cpu_dev = get_cpu_device(policy->cpu);
if (!cpu_dev) {
@@ -239,13 +283,29 @@ static int cpufreq_init(struct cpufreq_p
@@ -242,13 +286,29 @@ static int cpufreq_init(struct cpufreq_p
goto out_free_opp;
}
@ -133,7 +133,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
}
priv->cpu_dev = cpu_dev;
@@ -284,6 +344,8 @@ static int cpufreq_init(struct cpufreq_p
@@ -287,6 +347,8 @@ static int cpufreq_init(struct cpufreq_p
out_free_cpufreq_table:
dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table);

View file

@ -63,7 +63,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
cpu_dev = get_cpu_device(policy->cpu);
if (!cpu_dev) {
@@ -318,6 +350,13 @@ static int cpufreq_init(struct cpufreq_p
@@ -321,6 +353,13 @@ static int cpufreq_init(struct cpufreq_p
policy->suspend_freq = dev_pm_opp_get_freq(suspend_opp) / 1000;
rcu_read_unlock();

View file

@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -996,7 +996,8 @@ void phy_state_machine(struct work_struc
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
/* If the link is down, give up on negotiation for now */
if (!phydev->link) {
phydev->state = PHY_NOLINK;
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
phydev->adjust_link(phydev->attached_dev);
break;
}
@@ -1079,7 +1080,8 @@ void phy_state_machine(struct work_struc
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
netif_carrier_on(phydev->attached_dev);
} else {
phydev->state = PHY_NOLINK;
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
}
phydev->adjust_link(phydev->attached_dev);
@@ -1091,7 +1093,8 @@ void phy_state_machine(struct work_struc
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;

View file

@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -996,7 +996,8 @@ void phy_state_machine(struct work_struc
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
/* If the link is down, give up on negotiation for now */
if (!phydev->link) {
phydev->state = PHY_NOLINK;
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
phydev->adjust_link(phydev->attached_dev);
break;
}
@@ -1079,7 +1080,8 @@ void phy_state_machine(struct work_struc
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
netif_carrier_on(phydev->attached_dev);
} else {
phydev->state = PHY_NOLINK;
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
}
phydev->adjust_link(phydev->attached_dev);
@@ -1091,7 +1093,8 @@ void phy_state_machine(struct work_struc
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;

View file

@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -955,6 +955,16 @@ void phy_start(struct phy_device *phydev
@@ -959,6 +959,16 @@ void phy_start(struct phy_device *phydev
}
EXPORT_SYMBOL(phy_start);
@ -33,7 +33,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
/**
* phy_state_machine - Handle the state machine
* @work: work_struct that describes the work to be done
@@ -996,8 +1006,7 @@ void phy_state_machine(struct work_struc
@@ -1000,8 +1010,7 @@ void phy_state_machine(struct work_struc
/* If the link is down, give up on negotiation for now */
if (!phydev->link) {
phydev->state = PHY_NOLINK;
@ -43,7 +43,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
break;
}
@@ -1009,9 +1018,7 @@ void phy_state_machine(struct work_struc
@@ -1013,9 +1022,7 @@ void phy_state_machine(struct work_struc
/* If AN is done, we're running */
if (err > 0) {
phydev->state = PHY_RUNNING;
@ -54,7 +54,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
} else if (0 == phydev->link_timeout--)
needs_aneg = true;
break;
@@ -1036,8 +1043,7 @@ void phy_state_machine(struct work_struc
@@ -1040,8 +1047,7 @@ void phy_state_machine(struct work_struc
}
}
phydev->state = PHY_RUNNING;
@ -64,7 +64,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
}
break;
case PHY_FORCING:
@@ -1047,13 +1053,12 @@ void phy_state_machine(struct work_struc
@@ -1051,13 +1057,12 @@ void phy_state_machine(struct work_struc
if (phydev->link) {
phydev->state = PHY_RUNNING;
@ -80,7 +80,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
break;
case PHY_RUNNING:
/* Only register a CHANGE if we are polling and link changed
@@ -1076,14 +1081,12 @@ void phy_state_machine(struct work_struc
@@ -1080,14 +1085,12 @@ void phy_state_machine(struct work_struc
if (phydev->link) {
phydev->state = PHY_RUNNING;
@ -97,7 +97,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
if (phy_interrupt_is_valid(phydev))
err = phy_config_interrupt(phydev,
PHY_INTERRUPT_ENABLED);
@@ -1091,8 +1094,7 @@ void phy_state_machine(struct work_struc
@@ -1095,8 +1098,7 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;
@ -107,7 +107,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
do_suspend = true;
}
break;
@@ -1112,11 +1114,11 @@ void phy_state_machine(struct work_struc
@@ -1116,11 +1118,11 @@ void phy_state_machine(struct work_struc
if (phydev->link) {
phydev->state = PHY_RUNNING;
@ -121,7 +121,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
} else {
phydev->state = PHY_AN;
phydev->link_timeout = PHY_AN_TIMEOUT;
@@ -1128,11 +1130,11 @@ void phy_state_machine(struct work_struc
@@ -1132,11 +1134,11 @@ void phy_state_machine(struct work_struc
if (phydev->link) {
phydev->state = PHY_RUNNING;

View file

@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
obj-$(CONFIG_MDIO_BOARDINFO) += mdio-boardinfo.o
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1171,91 +1171,6 @@ void phy_mac_interrupt(struct phy_device
@@ -1175,91 +1175,6 @@ void phy_mac_interrupt(struct phy_device
}
EXPORT_SYMBOL(phy_mac_interrupt);

View file

@ -30,7 +30,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1307,11 +1307,16 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
@@ -1311,11 +1311,16 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
*/
int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data)
{

View file

@ -12,7 +12,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1307,16 +1307,33 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
@@ -1311,16 +1311,33 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
*/
int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data)
{

View file

@ -11,7 +11,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1191,6 +1191,7 @@ int phy_init_eee(struct phy_device *phyd
@@ -1195,6 +1195,7 @@ int phy_init_eee(struct phy_device *phyd
if ((phydev->duplex == DUPLEX_FULL) &&
((phydev->interface == PHY_INTERFACE_MODE_MII) ||
(phydev->interface == PHY_INTERFACE_MODE_GMII) ||

View file

@ -37,7 +37,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
/**
* phy_aneg_done - return auto-negotiation status
@@ -1403,3 +1421,14 @@ int phy_ethtool_set_link_ksettings(struc
@@ -1407,3 +1425,14 @@ int phy_ethtool_set_link_ksettings(struc
return phy_ethtool_ksettings_set(phydev, cmd);
}
EXPORT_SYMBOL(phy_ethtool_set_link_ksettings);

View file

@ -43,8 +43,6 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2 files changed, 925 insertions(+), 1 deletion(-)
create mode 100644 arch/mips/boot/dts/img/pistachio.dtsi
diff --git a/MAINTAINERS b/MAINTAINERS
index 63cefa6..f0037c7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9569,7 +9569,7 @@ L: linux-mips@linux-mips.org
@ -56,9 +54,6 @@ index 63cefa6..f0037c7 100644
F: arch/mips/configs/pistachio*_defconfig
PKTCDVD DRIVER
diff --git a/arch/mips/boot/dts/img/pistachio.dtsi b/arch/mips/boot/dts/img/pistachio.dtsi
new file mode 100644
index 0000000..57809f6
--- /dev/null
+++ b/arch/mips/boot/dts/img/pistachio.dtsi
@@ -0,0 +1,924 @@
@ -986,6 +981,3 @@ index 0000000..57809f6
+ clock-output-names = "xtal";
+ };
+};
--
2.7.4

View file

@ -37,9 +37,6 @@ Acked-by: James Hartley <james.hartley@imgtec.com>
create mode 100644 arch/mips/boot/dts/img/Makefile
create mode 100644 arch/mips/boot/dts/img/pistachio_marduk.dts
diff --git a/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt b/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt
new file mode 100644
index 0000000..2d5126d
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt
@@ -0,0 +1,10 @@
@ -53,9 +50,6 @@ index 0000000..2d5126d
+
+It is also known as Creator Ci40. Marduk is legacy name and will
+be there for decades.
diff --git a/arch/mips/boot/dts/img/Makefile b/arch/mips/boot/dts/img/Makefile
new file mode 100644
index 0000000..69a65f0
--- /dev/null
+++ b/arch/mips/boot/dts/img/Makefile
@@ -0,0 +1,9 @@
@ -68,9 +62,6 @@ index 0000000..69a65f0
+
+always := $(dtb-y)
+clean-files := *.dtb *.dtb.S
diff --git a/arch/mips/boot/dts/img/pistachio_marduk.dts b/arch/mips/boot/dts/img/pistachio_marduk.dts
new file mode 100644
index 0000000..cf9cebd
--- /dev/null
+++ b/arch/mips/boot/dts/img/pistachio_marduk.dts
@@ -0,0 +1,163 @@
@ -237,6 +228,3 @@ index 0000000..cf9cebd
+ status = "okay";
+ clock-frequency = <400000>;
+};
--
2.7.4

View file

@ -11,8 +11,6 @@ Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
arch/mips/boot/dts/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
index fc7a0a9..b9db492 100644
--- a/arch/mips/boot/dts/Makefile
+++ b/arch/mips/boot/dts/Makefile
@@ -1,5 +1,6 @@
@ -22,6 +20,3 @@ index fc7a0a9..b9db492 100644
dts-dirs += ingenic
dts-dirs += lantiq
dts-dirs += mti
--
2.7.4

View file

@ -14,11 +14,9 @@ Signed-off-by: Damien Horsley <damien.horsley@imgtec.com>
drivers/dma/img-mdc-dma.c | 40 ++++++++++++++++++++++++----------------
1 file changed, 24 insertions(+), 16 deletions(-)
diff --git a/drivers/dma/img-mdc-dma.c b/drivers/dma/img-mdc-dma.c
index 624f1e1..0216e2c 100644
--- a/drivers/dma/img-mdc-dma.c
+++ b/drivers/dma/img-mdc-dma.c
@@ -623,25 +623,33 @@ static enum dma_status mdc_tx_status(struct dma_chan *chan,
@@ -623,25 +623,33 @@ static enum dma_status mdc_tx_status(str
(MDC_CMDS_PROCESSED_CMDS_DONE_MASK + 1);
/*
@ -68,6 +66,3 @@ index 624f1e1..0216e2c 100644
}
}
spin_unlock_irqrestore(&mchan->vc.lock, flags);
--
2.7.4

View file

@ -26,8 +26,6 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
drivers/spi/spi-img-spfi.c | 96 ++++++++++++++++++++++++++++++++++++++++------
1 file changed, 85 insertions(+), 11 deletions(-)
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
index 7a37090..c845a50 100644
--- a/drivers/spi/spi-img-spfi.c
+++ b/drivers/spi/spi-img-spfi.c
@@ -40,7 +40,8 @@
@ -68,7 +66,7 @@ index 7a37090..c845a50 100644
};
struct img_spfi_device_data {
@@ -123,9 +131,11 @@ static inline void spfi_start(struct img_spfi *spfi)
@@ -123,9 +131,11 @@ static inline void spfi_start(struct img
{
u32 val;
@ -83,7 +81,7 @@ index 7a37090..c845a50 100644
}
static inline void spfi_reset(struct img_spfi *spfi)
@@ -138,12 +148,21 @@ static int spfi_wait_all_done(struct img_spfi *spfi)
@@ -138,12 +148,21 @@ static int spfi_wait_all_done(struct img
{
unsigned long timeout = jiffies + msecs_to_jiffies(50);
@ -105,7 +103,7 @@ index 7a37090..c845a50 100644
return 0;
}
cpu_relax();
@@ -494,9 +513,32 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi,
@@ -494,9 +513,32 @@ static void img_spfi_config(struct spi_m
struct spi_transfer *xfer)
{
struct img_spfi *spfi = spi_master_get_devdata(spi->master);
@ -139,7 +137,7 @@ index 7a37090..c845a50 100644
* output = spfi_clk * (BITCLK / 512), where BITCLK must be a
* power of 2 up to 128
*/
@@ -509,20 +551,52 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi,
@@ -509,20 +551,52 @@ static void img_spfi_config(struct spi_m
val |= div << SPFI_DEVICE_PARAMETER_BITCLK_SHIFT;
spfi_writel(spfi, val, SPFI_DEVICE_PARAMETER(spi->chip_select));
@ -198,6 +196,3 @@ index 7a37090..c845a50 100644
xfer->rx_nbits == SPI_NBITS_QUAD)
val |= SPFI_CONTROL_TMODE_QUAD << SPFI_CONTROL_TMODE_SHIFT;
val |= SPFI_CONTROL_SE;
--
2.7.4

View file

@ -13,11 +13,9 @@ Signed-off-by: Ionela Voinescu <ionela.voinescu@imgtec.com>
drivers/spi/spi-img-spfi.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
index c845a50..0d73d31 100644
--- a/drivers/spi/spi-img-spfi.c
+++ b/drivers/spi/spi-img-spfi.c
@@ -438,6 +438,9 @@ static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg)
@@ -438,6 +438,9 @@ static int img_spfi_prepare(struct spi_m
u32 val;
val = spfi_readl(spfi, SPFI_PORT_STATE);
@ -27,6 +25,3 @@ index c845a50..0d73d31 100644
if (msg->spi->mode & SPI_CPHA)
val |= SPFI_PORT_STATE_CK_PHASE(msg->spi->chip_select);
else
--
2.7.4

View file

@ -13,11 +13,9 @@ Signed-off-by: Ionela Voinescu <ionela.voinescu@imgtec.com>
drivers/spi/spi-img-spfi.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
index 0d73d31..231b59c 100644
--- a/drivers/spi/spi-img-spfi.c
+++ b/drivers/spi/spi-img-spfi.c
@@ -437,18 +437,23 @@ static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg)
@@ -437,18 +437,23 @@ static int img_spfi_prepare(struct spi_m
struct img_spfi *spfi = spi_master_get_devdata(master);
u32 val;
@ -46,7 +44,7 @@ index 0d73d31..231b59c 100644
spfi_writel(spfi, val, SPFI_PORT_STATE);
return 0;
@@ -548,11 +553,15 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi,
@@ -548,11 +553,15 @@ static void img_spfi_config(struct spi_m
div = DIV_ROUND_UP(clk_get_rate(spfi->spfi_clk), xfer->speed_hz);
div = clamp(512 / (1 << get_count_order(div)), 1, 128);
@ -64,6 +62,3 @@ index 0d73d31..231b59c 100644
if (!list_is_last(&xfer->transfer_list, &master->cur_msg->transfers) &&
/*
--
2.7.4

View file

@ -27,11 +27,9 @@ Signed-off-by: Ionela Voinescu <ionela.voinescu@imgtec.com>
drivers/spi/spi-img-spfi.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
index 231b59c..8ad6c75 100644
--- a/drivers/spi/spi-img-spfi.c
+++ b/drivers/spi/spi-img-spfi.c
@@ -346,12 +346,11 @@ static int img_spfi_start_dma(struct spi_master *master,
@@ -346,12 +346,11 @@ static int img_spfi_start_dma(struct spi
if (xfer->len % 4 == 0) {
rxconf.src_addr = spfi->phys + SPFI_RX_32BIT_VALID_DATA;
rxconf.src_addr_width = 4;
@ -45,7 +43,7 @@ index 231b59c..8ad6c75 100644
dmaengine_slave_config(spfi->rx_ch, &rxconf);
rxdesc = dmaengine_prep_slave_sg(spfi->rx_ch, xfer->rx_sg.sgl,
@@ -370,12 +369,11 @@ static int img_spfi_start_dma(struct spi_master *master,
@@ -370,12 +369,11 @@ static int img_spfi_start_dma(struct spi
if (xfer->len % 4 == 0) {
txconf.dst_addr = spfi->phys + SPFI_TX_32BIT_VALID_DATA;
txconf.dst_addr_width = 4;
@ -59,6 +57,3 @@ index 231b59c..8ad6c75 100644
dmaengine_slave_config(spfi->tx_ch, &txconf);
txdesc = dmaengine_prep_slave_sg(spfi->tx_ch, xfer->tx_sg.sgl,
--
2.7.4

View file

@ -22,8 +22,6 @@ Signed-off-by: Ionela Voinescu <ionela.voinescu@imgtec.com>
drivers/spi/spi-img-spfi.c | 49 +++++++++++++++++++++++++++++++++-------------
1 file changed, 35 insertions(+), 14 deletions(-)
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
index 8ad6c75..a124423 100644
--- a/drivers/spi/spi-img-spfi.c
+++ b/drivers/spi/spi-img-spfi.c
@@ -83,6 +83,14 @@
@ -41,7 +39,7 @@ index 8ad6c75..a124423 100644
/*
* There are four parallel FIFOs of 16 bytes each. The word buffer
* (*_32BIT_VALID_DATA) accesses all four FIFOs at once, resulting in an
@@ -144,6 +152,23 @@ static inline void spfi_reset(struct img_spfi *spfi)
@@ -144,6 +152,23 @@ static inline void spfi_reset(struct img
spfi_writel(spfi, 0, SPFI_CONTROL);
}
@ -65,7 +63,7 @@ index 8ad6c75..a124423 100644
static int spfi_wait_all_done(struct img_spfi *spfi)
{
unsigned long timeout = jiffies + msecs_to_jiffies(50);
@@ -152,19 +177,9 @@ static int spfi_wait_all_done(struct img_spfi *spfi)
@@ -152,19 +177,9 @@ static int spfi_wait_all_done(struct img
return 0;
while (time_before(jiffies, timeout)) {
@ -87,7 +85,7 @@ index 8ad6c75..a124423 100644
cpu_relax();
}
@@ -296,6 +311,8 @@ static int img_spfi_start_pio(struct spi_master *master,
@@ -296,6 +311,8 @@ static int img_spfi_start_pio(struct spi
}
ret = spfi_wait_all_done(spfi);
@ -96,7 +94,7 @@ index 8ad6c75..a124423 100644
if (ret < 0)
return ret;
@@ -311,8 +328,10 @@ static void img_spfi_dma_rx_cb(void *data)
@@ -311,8 +328,10 @@ static void img_spfi_dma_rx_cb(void *dat
spin_lock_irqsave(&spfi->lock, flags);
spfi->rx_dma_busy = false;
@ -108,7 +106,7 @@ index 8ad6c75..a124423 100644
spin_unlock_irqrestore(&spfi->lock, flags);
}
@@ -325,8 +344,10 @@ static void img_spfi_dma_tx_cb(void *data)
@@ -325,8 +344,10 @@ static void img_spfi_dma_tx_cb(void *dat
spin_lock_irqsave(&spfi->lock, flags);
spfi->tx_dma_busy = false;
@ -120,6 +118,3 @@ index 8ad6c75..a124423 100644
spin_unlock_irqrestore(&spfi->lock, flags);
}
--
2.7.4

View file

@ -26,11 +26,9 @@ Signed-off-by: James Hogan <james.hogan@imgtec.com>
kernel/time/clockevents.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index 2c5bc77..ddd7e82 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
@@ -281,16 +281,28 @@ static int clockevents_program_min_delta(struct clock_event_device *dev)
@@ -281,16 +281,28 @@ static int clockevents_program_min_delta
{
unsigned long long clc;
int64_t delta;
@ -66,6 +64,3 @@ index 2c5bc77..ddd7e82 100644
}
#endif /* CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST */
--
2.7.4

View file

@ -18,11 +18,9 @@ Signed-off-by: Govindraj Raja <Govindraj.Raja@imgtec.com>
include/dt-bindings/clock/pistachio-clk.h | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/pistachio/clk-pistachio.c b/drivers/clk/pistachio/clk-pistachio.c
index c4ceb5e..1c968d9 100644
--- a/drivers/clk/pistachio/clk-pistachio.c
+++ b/drivers/clk/pistachio/clk-pistachio.c
@@ -44,7 +44,7 @@ static struct pistachio_gate pistachio_gates[] __initdata = {
@@ -44,7 +44,7 @@ static struct pistachio_gate pistachio_g
GATE(CLK_AUX_ADC_INTERNAL, "aux_adc_internal", "sys_internal_div",
0x104, 22),
GATE(CLK_AUX_ADC, "aux_adc", "aux_adc_div", 0x104, 23),
@ -31,7 +29,7 @@ index c4ceb5e..1c968d9 100644
GATE(CLK_BT, "bt", "bt_div", 0x104, 25),
GATE(CLK_BT_DIV4, "bt_div4", "bt_div4_div", 0x104, 26),
GATE(CLK_BT_DIV8, "bt_div8", "bt_div8_div", 0x104, 27),
@@ -54,6 +54,7 @@ static struct pistachio_gate pistachio_gates[] __initdata = {
@@ -54,6 +54,7 @@ static struct pistachio_gate pistachio_g
static struct pistachio_fixed_factor pistachio_ffs[] __initdata = {
FIXED_FACTOR(CLK_WIFI_DIV4, "wifi_div4", "wifi_pll", 4),
FIXED_FACTOR(CLK_WIFI_DIV8, "wifi_div8", "wifi_pll", 8),
@ -39,8 +37,6 @@ index c4ceb5e..1c968d9 100644
};
static struct pistachio_div pistachio_divs[] __initdata = {
diff --git a/include/dt-bindings/clock/pistachio-clk.h b/include/dt-bindings/clock/pistachio-clk.h
index 039f83f..77b92ae 100644
--- a/include/dt-bindings/clock/pistachio-clk.h
+++ b/include/dt-bindings/clock/pistachio-clk.h
@@ -21,6 +21,7 @@
@ -51,6 +47,3 @@ index 039f83f..77b92ae 100644
/* Gate clocks */
#define CLK_MIPS 32
--
2.7.4

View file

@ -26,8 +26,6 @@ Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
arch/mips/boot/dts/img/pistachio_marduk.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/mips/boot/dts/img/pistachio_marduk.dts b/arch/mips/boot/dts/img/pistachio_marduk.dts
index cf9cebd..7708815 100644
--- a/arch/mips/boot/dts/img/pistachio_marduk.dts
+++ b/arch/mips/boot/dts/img/pistachio_marduk.dts
@@ -120,7 +120,7 @@
@ -47,6 +45,3 @@ index cf9cebd..7708815 100644
};
&pwm {
--
2.7.4

View file

@ -8,11 +8,9 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
drivers/mtd/spi-nor/spi-nor.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index d0fc165..fcee697 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -1306,6 +1306,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode)
@@ -1534,6 +1534,7 @@ int spi_nor_scan(struct spi_nor *nor, co
struct device *dev = nor->dev;
struct mtd_info *mtd = &nor->mtd;
struct device_node *np = spi_nor_get_flash_node(nor);
@ -20,7 +18,7 @@ index d0fc165..fcee697 100644
int ret;
int i;
@@ -1361,7 +1362,12 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode)
@@ -1598,7 +1599,12 @@ int spi_nor_scan(struct spi_nor *nor, co
spi_nor_wait_till_ready(nor);
}
@ -34,6 +32,3 @@ index d0fc165..fcee697 100644
mtd->name = dev_name(dev);
mtd->priv = nor;
mtd->type = MTD_NORFLASH;
--
2.7.4

View file

@ -19,11 +19,9 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
drivers/mtd/nand/nand_base.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 3bde96a..69b5cac 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3964,7 +3964,8 @@ static bool find_full_id_nand(struct mtd_info *mtd, struct nand_chip *chip,
@@ -3964,7 +3964,8 @@ static bool find_full_id_nand(struct mtd
mtd->erasesize = type->erasesize;
mtd->oobsize = type->oobsize;
@ -33,6 +31,3 @@ index 3bde96a..69b5cac 100644
chip->chipsize = (uint64_t)type->chipsize << 20;
chip->options |= type->options;
chip->ecc_strength_ds = NAND_ECC_STRENGTH(type);
--
2.7.4

View file

@ -13,11 +13,9 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
include/linux/mtd/nand.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 2af9869..dc80fcd 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -182,6 +182,7 @@ struct nand_manufacturers nand_manuf_ids[] = {
@@ -182,6 +182,7 @@ struct nand_manufacturers nand_manuf_ids
{NAND_MFR_SANDISK, "SanDisk"},
{NAND_MFR_INTEL, "Intel"},
{NAND_MFR_ATO, "ATO"},
@ -25,11 +23,9 @@ index 2af9869..dc80fcd 100644
{0x0, "Unknown"}
};
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index d8905a2..3a00df7 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -928,6 +928,7 @@ static inline void nand_set_controller_data(struct nand_chip *chip, void *priv)
@@ -928,6 +928,7 @@ static inline void nand_set_controller_d
#define NAND_MFR_SANDISK 0x45
#define NAND_MFR_INTEL 0x89
#define NAND_MFR_ATO 0x9b
@ -37,6 +33,3 @@ index d8905a2..3a00df7 100644
/* The maximum expected count of bytes in the NAND ID sequence */
#define NAND_MAX_ID_LEN 8
--
2.7.4

View file

@ -44,11 +44,9 @@ Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
create mode 100644 drivers/mtd/spi-nand/spi-nand-base.c
create mode 100644 include/linux/mtd/spi-nand.h
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index e83a279..9163d7f 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -334,6 +334,8 @@ source "drivers/mtd/onenand/Kconfig"
@@ -369,6 +369,8 @@ source "drivers/mtd/onenand/Kconfig"
source "drivers/mtd/lpddr/Kconfig"
@ -57,20 +55,15 @@ index e83a279..9163d7f 100644
source "drivers/mtd/spi-nor/Kconfig"
source "drivers/mtd/ubi/Kconfig"
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
index 99bb9a1..38a4756 100644
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -32,5 +32,6 @@ inftl-objs := inftlcore.o inftlmount.o
@@ -35,5 +35,6 @@ inftl-objs := inftlcore.o inftlmount.o
obj-y += chips/ lpddr/ maps/ devices/ nand/ onenand/ tests/
+obj-$(CONFIG_MTD_SPI_NAND) += spi-nand/
obj-$(CONFIG_MTD_SPI_NOR) += spi-nor/
obj-$(CONFIG_MTD_UBI) += ubi/
diff --git a/drivers/mtd/spi-nand/Kconfig b/drivers/mtd/spi-nand/Kconfig
new file mode 100644
index 0000000..17b31e1
--- /dev/null
+++ b/drivers/mtd/spi-nand/Kconfig
@@ -0,0 +1,7 @@
@ -81,16 +74,10 @@ index 0000000..17b31e1
+ help
+ This is the framework for the SPI NAND.
+
diff --git a/drivers/mtd/spi-nand/Makefile b/drivers/mtd/spi-nand/Makefile
new file mode 100644
index 0000000..d454c52
--- /dev/null
+++ b/drivers/mtd/spi-nand/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_MTD_SPI_NAND) += spi-nand-base.o
diff --git a/drivers/mtd/spi-nand/spi-nand-base.c b/drivers/mtd/spi-nand/spi-nand-base.c
new file mode 100644
index 0000000..5d79f85
--- /dev/null
+++ b/drivers/mtd/spi-nand/spi-nand-base.c
@@ -0,0 +1,566 @@
@ -660,9 +647,6 @@ index 0000000..5d79f85
+MODULE_AUTHOR("Ezequiel Garcia <ezequiel.garcia@imgtec.com>");
+MODULE_DESCRIPTION("Framework for SPI NAND");
+MODULE_LICENSE("GPL v2");
diff --git a/include/linux/mtd/spi-nand.h b/include/linux/mtd/spi-nand.h
new file mode 100644
index 0000000..b5cc99f
--- /dev/null
+++ b/include/linux/mtd/spi-nand.h
@@ -0,0 +1,54 @@
@ -720,6 +704,3 @@ index 0000000..b5cc99f
+void spi_nand_unregister(struct spi_nand *snand);
+
+#endif
--
2.7.4

View file

@ -26,8 +26,6 @@ Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
3 files changed, 483 insertions(+)
create mode 100644 drivers/mtd/spi-nand/spi-nand-device.c
diff --git a/drivers/mtd/spi-nand/Kconfig b/drivers/mtd/spi-nand/Kconfig
index 17b31e1..ab6bb6c 100644
--- a/drivers/mtd/spi-nand/Kconfig
+++ b/drivers/mtd/spi-nand/Kconfig
@@ -5,3 +5,13 @@ menuconfig MTD_SPI_NAND
@ -44,16 +42,11 @@ index 17b31e1..ab6bb6c 100644
+ Select this option if you require support for SPI NAND devices.
+
+endif # MTD_SPI_NAND
diff --git a/drivers/mtd/spi-nand/Makefile b/drivers/mtd/spi-nand/Makefile
index d454c52..6e460d1 100644
--- a/drivers/mtd/spi-nand/Makefile
+++ b/drivers/mtd/spi-nand/Makefile
@@ -1 +1,2 @@
obj-$(CONFIG_MTD_SPI_NAND) += spi-nand-base.o
+obj-$(CONFIG_MTD_SPI_NAND_DEVICES) += spi-nand-device.o
diff --git a/drivers/mtd/spi-nand/spi-nand-device.c b/drivers/mtd/spi-nand/spi-nand-device.c
new file mode 100644
index 0000000..95db20b
--- /dev/null
+++ b/drivers/mtd/spi-nand/spi-nand-device.c
@@ -0,0 +1,472 @@
@ -529,6 +522,3 @@ index 0000000..95db20b
+MODULE_AUTHOR("Ezequiel Garcia <ezequiel.garcia@imgtec.com>");
+MODULE_DESCRIPTION("SPI NAND device support");
+MODULE_LICENSE("GPL v2");
--
2.7.4

View file

@ -11,11 +11,9 @@ Signed-off-by: Xue Liu <liuxuenetmail@gmail.com>
drivers/net/phy/micrel.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index ea92d52..73401fb 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -273,6 +273,7 @@ static int kszphy_config_init(struct phy_device *phydev)
@@ -273,6 +273,7 @@ static int kszphy_config_init(struct phy
struct kszphy_priv *priv = phydev->priv;
const struct kszphy_type *type;
int ret;
@ -23,7 +21,7 @@ index ea92d52..73401fb 100644
if (!priv)
return 0;
@@ -308,6 +309,11 @@ static int kszphy_config_init(struct phy_device *phydev)
@@ -308,6 +309,11 @@ static int kszphy_config_init(struct phy
return ret;
}
@ -35,6 +33,3 @@ index ea92d52..73401fb 100644
return 0;
}
--
2.7.4

View file

@ -8,8 +8,6 @@ Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
arch/mips/boot/dts/img/pistachio_marduk.dts | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/mips/boot/dts/img/pistachio_marduk.dts b/arch/mips/boot/dts/img/pistachio_marduk.dts
index 7708815..b18aa26 100644
--- a/arch/mips/boot/dts/img/pistachio_marduk.dts
+++ b/arch/mips/boot/dts/img/pistachio_marduk.dts
@@ -90,6 +90,7 @@
@ -20,6 +18,3 @@ index 7708815..b18aa26 100644
};
};
--
2.7.4

View file

@ -8,8 +8,6 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
arch/mips/boot/dts/img/pistachio_marduk.dts | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/mips/boot/dts/img/pistachio_marduk.dts b/arch/mips/boot/dts/img/pistachio_marduk.dts
index b18aa26..ed92462 100644
--- a/arch/mips/boot/dts/img/pistachio_marduk.dts
+++ b/arch/mips/boot/dts/img/pistachio_marduk.dts
@@ -92,6 +92,17 @@
@ -30,6 +28,3 @@ index b18aa26..ed92462 100644
};
&uart0 {
--
2.7.4

View file

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2564,6 +2564,18 @@ static struct usb_device_id uvc_ids[] =
@@ -2670,6 +2670,18 @@ static struct usb_device_id uvc_ids[] =
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_QUIRK_FORCE_Y8 },

View file

@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -996,7 +996,8 @@ void phy_state_machine(struct work_struc
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
/* If the link is down, give up on negotiation for now */
if (!phydev->link) {
phydev->state = PHY_NOLINK;
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
phydev->adjust_link(phydev->attached_dev);
break;
}
@@ -1079,7 +1080,8 @@ void phy_state_machine(struct work_struc
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
netif_carrier_on(phydev->attached_dev);
} else {
phydev->state = PHY_NOLINK;
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
}
phydev->adjust_link(phydev->attached_dev);
@@ -1091,7 +1093,8 @@ void phy_state_machine(struct work_struc
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;

View file

@ -1,30 +0,0 @@
--- a/arch/mips/ralink/prom.c
+++ b/arch/mips/ralink/prom.c
@@ -30,8 +30,10 @@ const char *get_system_type(void)
return soc_info.sys_type;
}
-static __init void prom_init_cmdline(int argc, char **argv)
+static __init void prom_init_cmdline(void)
{
+ int argc;
+ char **argv;
int i;
pr_debug("prom: fw_arg0=%08x fw_arg1=%08x fw_arg2=%08x fw_arg3=%08x\n",
@@ -60,14 +62,11 @@ static __init void prom_init_cmdline(int
void __init prom_init(void)
{
- int argc;
- char **argv;
-
prom_soc_init(&soc_info);
pr_info("SoC Type: %s\n", get_system_type());
- prom_init_cmdline(argc, argv);
+ prom_init_cmdline();
}
void __init prom_free_prom_memory(void)

View file

@ -1,7 +1,5 @@
Index: linux-4.9.14/arch/mips/kernel/mips-cm.c
===================================================================
--- linux-4.9.14.orig/arch/mips/kernel/mips-cm.c
+++ linux-4.9.14/arch/mips/kernel/mips-cm.c
--- a/arch/mips/kernel/mips-cm.c
+++ b/arch/mips/kernel/mips-cm.c
@@ -239,6 +239,7 @@ int mips_cm_probe(void)
/* disable CM regions */

View file

@ -35,7 +35,7 @@
ralink_clk_add("10000c00.uartlite", periph_rate);
--- a/arch/mips/ralink/rt288x.c
+++ b/arch/mips/ralink/rt288x.c
@@ -75,6 +75,7 @@ void __init ralink_clk_init(void)
@@ -65,6 +65,7 @@ void __init ralink_clk_init(void)
ralink_clk_add("300100.timer", cpu_rate / 2);
ralink_clk_add("300120.watchdog", cpu_rate / 2);
ralink_clk_add("300500.uart", cpu_rate / 2);
@ -45,7 +45,7 @@
ralink_clk_add("480000.wmac", wmac_rate);
--- a/arch/mips/ralink/rt305x.c
+++ b/arch/mips/ralink/rt305x.c
@@ -200,6 +200,8 @@ void __init ralink_clk_init(void)
@@ -189,6 +189,8 @@ void __init ralink_clk_init(void)
ralink_clk_add("cpu", cpu_rate);
ralink_clk_add("sys", sys_rate);
@ -56,7 +56,7 @@
ralink_clk_add("10000100.timer", wdt_rate);
--- a/arch/mips/ralink/rt3883.c
+++ b/arch/mips/ralink/rt3883.c
@@ -108,6 +108,8 @@ void __init ralink_clk_init(void)
@@ -98,6 +98,8 @@ void __init ralink_clk_init(void)
ralink_clk_add("10000100.timer", sys_rate);
ralink_clk_add("10000120.watchdog", sys_rate);
ralink_clk_add("10000500.uart", 40000000);

View file

@ -1,23 +1,6 @@
--- a/arch/mips/ralink/rt3883.c
+++ b/arch/mips/ralink/rt3883.c
@@ -63,16 +63,6 @@ static struct rt2880_pmx_group rt3883_pi
{ 0 }
};
-static void rt3883_wdt_reset(void)
-{
- u32 t;
-
- /* enable WDT reset output on GPIO 2 */
- t = rt_sysc_r32(RT3883_SYSC_REG_SYSCFG1);
- t |= RT3883_SYSCFG1_GPIO2_AS_WDT_OUT;
- rt_sysc_w32(t, RT3883_SYSC_REG_SYSCFG1);
-}
-
void __init ralink_clk_init(void)
{
unsigned long cpu_rate, sys_rate;
@@ -157,5 +147,5 @@ void prom_soc_init(struct ralink_soc_inf
@@ -147,5 +147,5 @@ void prom_soc_init(struct ralink_soc_inf
rt2880_pinmux_data = rt3883_pinmux_data;