Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
fe6c5814
K
Kernel
项目概览
openeuler
/
Kernel
大约 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
fe6c5814
编写于
3月 11, 2016
作者:
T
Tejun Heo
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-4.5-fixes' into for-4.6
上级
51b1b286
dc8b4afc
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
61 addition
and
4 deletion
+61
-4
drivers/ata/ahci.c
drivers/ata/ahci.c
+49
-0
drivers/ata/libahci.c
drivers/ata/libahci.c
+1
-2
drivers/ata/pata_rb532_cf.c
drivers/ata/pata_rb532_cf.c
+10
-1
include/linux/libata.h
include/linux/libata.h
+1
-1
未找到文件。
drivers/ata/ahci.c
浏览文件 @
fe6c5814
...
@@ -372,15 +372,21 @@ static const struct pci_device_id ahci_pci_tbl[] = {
...
@@ -372,15 +372,21 @@ static const struct pci_device_id ahci_pci_tbl[] = {
{
PCI_VDEVICE
(
INTEL
,
0xa107
),
board_ahci
},
/* Sunrise Point-H RAID */
{
PCI_VDEVICE
(
INTEL
,
0xa107
),
board_ahci
},
/* Sunrise Point-H RAID */
{
PCI_VDEVICE
(
INTEL
,
0xa10f
),
board_ahci
},
/* Sunrise Point-H RAID */
{
PCI_VDEVICE
(
INTEL
,
0xa10f
),
board_ahci
},
/* Sunrise Point-H RAID */
{
PCI_VDEVICE
(
INTEL
,
0x2822
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0x2822
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0x2823
),
board_ahci
},
/* Lewisburg AHCI*/
{
PCI_VDEVICE
(
INTEL
,
0x2826
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0x2826
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0x2827
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa182
),
board_ahci
},
/* Lewisburg AHCI*/
{
PCI_VDEVICE
(
INTEL
,
0xa182
),
board_ahci
},
/* Lewisburg AHCI*/
{
PCI_VDEVICE
(
INTEL
,
0xa184
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa184
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa186
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa186
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa18e
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa18e
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa1d2
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa1d6
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa202
),
board_ahci
},
/* Lewisburg AHCI*/
{
PCI_VDEVICE
(
INTEL
,
0xa202
),
board_ahci
},
/* Lewisburg AHCI*/
{
PCI_VDEVICE
(
INTEL
,
0xa204
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa204
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa206
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa206
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa20e
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa20e
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa252
),
board_ahci
},
/* Lewisburg RAID*/
{
PCI_VDEVICE
(
INTEL
,
0xa256
),
board_ahci
},
/* Lewisburg RAID*/
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
{
PCI_VENDOR_ID_JMICRON
,
PCI_ANY_ID
,
PCI_ANY_ID
,
PCI_ANY_ID
,
{
PCI_VENDOR_ID_JMICRON
,
PCI_ANY_ID
,
PCI_ANY_ID
,
PCI_ANY_ID
,
...
@@ -1360,6 +1366,44 @@ static inline void ahci_gtf_filter_workaround(struct ata_host *host)
...
@@ -1360,6 +1366,44 @@ static inline void ahci_gtf_filter_workaround(struct ata_host *host)
{}
{}
#endif
#endif
#ifdef CONFIG_ARM64
/*
* Due to ERRATA#22536, ThunderX needs to handle HOST_IRQ_STAT differently.
* Workaround is to make sure all pending IRQs are served before leaving
* handler.
*/
static
irqreturn_t
ahci_thunderx_irq_handler
(
int
irq
,
void
*
dev_instance
)
{
struct
ata_host
*
host
=
dev_instance
;
struct
ahci_host_priv
*
hpriv
;
unsigned
int
rc
=
0
;
void
__iomem
*
mmio
;
u32
irq_stat
,
irq_masked
;
unsigned
int
handled
=
1
;
VPRINTK
(
"ENTER
\n
"
);
hpriv
=
host
->
private_data
;
mmio
=
hpriv
->
mmio
;
irq_stat
=
readl
(
mmio
+
HOST_IRQ_STAT
);
if
(
!
irq_stat
)
return
IRQ_NONE
;
do
{
irq_masked
=
irq_stat
&
hpriv
->
port_map
;
spin_lock
(
&
host
->
lock
);
rc
=
ahci_handle_port_intr
(
host
,
irq_masked
);
if
(
!
rc
)
handled
=
0
;
writel
(
irq_stat
,
mmio
+
HOST_IRQ_STAT
);
irq_stat
=
readl
(
mmio
+
HOST_IRQ_STAT
);
spin_unlock
(
&
host
->
lock
);
}
while
(
irq_stat
);
VPRINTK
(
"EXIT
\n
"
);
return
IRQ_RETVAL
(
handled
);
}
#endif
/*
/*
* ahci_init_msix() - optionally enable per-port MSI-X otherwise defer
* ahci_init_msix() - optionally enable per-port MSI-X otherwise defer
* to single msi.
* to single msi.
...
@@ -1595,6 +1639,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
...
@@ -1595,6 +1639,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if
(
ahci_broken_devslp
(
pdev
))
if
(
ahci_broken_devslp
(
pdev
))
hpriv
->
flags
|=
AHCI_HFLAG_NO_DEVSLP
;
hpriv
->
flags
|=
AHCI_HFLAG_NO_DEVSLP
;
#ifdef CONFIG_ARM64
if
(
pdev
->
vendor
==
0x177d
&&
pdev
->
device
==
0xa01c
)
hpriv
->
irq_handler
=
ahci_thunderx_irq_handler
;
#endif
/* save initial config */
/* save initial config */
ahci_pci_save_initial_config
(
pdev
,
hpriv
);
ahci_pci_save_initial_config
(
pdev
,
hpriv
);
...
...
drivers/ata/libahci.c
浏览文件 @
fe6c5814
...
@@ -1211,8 +1211,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,
...
@@ -1211,8 +1211,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,
/* mark esata ports */
/* mark esata ports */
tmp
=
readl
(
port_mmio
+
PORT_CMD
);
tmp
=
readl
(
port_mmio
+
PORT_CMD
);
if
((
tmp
&
PORT_CMD_HPCP
)
||
if
((
tmp
&
PORT_CMD_ESP
)
&&
(
hpriv
->
cap
&
HOST_CAP_SXS
))
((
tmp
&
PORT_CMD_ESP
)
&&
(
hpriv
->
cap
&
HOST_CAP_SXS
)))
ap
->
pflags
|=
ATA_PFLAG_EXTERNAL
;
ap
->
pflags
|=
ATA_PFLAG_EXTERNAL
;
}
}
...
...
drivers/ata/pata_rb532_cf.c
浏览文件 @
fe6c5814
...
@@ -32,6 +32,8 @@
...
@@ -32,6 +32,8 @@
#include <linux/libata.h>
#include <linux/libata.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_host.h>
#include <asm/mach-rc32434/rb.h>
#define DRV_NAME "pata-rb532-cf"
#define DRV_NAME "pata-rb532-cf"
#define DRV_VERSION "0.1.0"
#define DRV_VERSION "0.1.0"
#define DRV_DESC "PATA driver for RouterBOARD 532 Compact Flash"
#define DRV_DESC "PATA driver for RouterBOARD 532 Compact Flash"
...
@@ -107,6 +109,7 @@ static int rb532_pata_driver_probe(struct platform_device *pdev)
...
@@ -107,6 +109,7 @@ static int rb532_pata_driver_probe(struct platform_device *pdev)
int
gpio
;
int
gpio
;
struct
resource
*
res
;
struct
resource
*
res
;
struct
ata_host
*
ah
;
struct
ata_host
*
ah
;
struct
cf_device
*
pdata
;
struct
rb532_cf_info
*
info
;
struct
rb532_cf_info
*
info
;
int
ret
;
int
ret
;
...
@@ -122,7 +125,13 @@ static int rb532_pata_driver_probe(struct platform_device *pdev)
...
@@ -122,7 +125,13 @@ static int rb532_pata_driver_probe(struct platform_device *pdev)
return
-
ENOENT
;
return
-
ENOENT
;
}
}
gpio
=
irq_to_gpio
(
irq
);
pdata
=
dev_get_platdata
(
&
pdev
->
dev
);
if
(
!
pdata
)
{
dev_err
(
&
pdev
->
dev
,
"no platform data specified
\n
"
);
return
-
EINVAL
;
}
gpio
=
pdata
->
gpio_pin
;
if
(
gpio
<
0
)
{
if
(
gpio
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"no GPIO found for irq%d
\n
"
,
irq
);
dev_err
(
&
pdev
->
dev
,
"no GPIO found for irq%d
\n
"
,
irq
);
return
-
ENOENT
;
return
-
ENOENT
;
...
...
include/linux/libata.h
浏览文件 @
fe6c5814
...
@@ -720,7 +720,7 @@ struct ata_device {
...
@@ -720,7 +720,7 @@ struct ata_device {
union
{
union
{
u16
id
[
ATA_ID_WORDS
];
/* IDENTIFY xxx DEVICE data */
u16
id
[
ATA_ID_WORDS
];
/* IDENTIFY xxx DEVICE data */
u32
gscr
[
SATA_PMP_GSCR_DWORDS
];
/* PMP GSCR block */
u32
gscr
[
SATA_PMP_GSCR_DWORDS
];
/* PMP GSCR block */
};
}
____cacheline_aligned
;
/* DEVSLP Timing Variables from Identify Device Data Log */
/* DEVSLP Timing Variables from Identify Device Data Log */
u8
devslp_timing
[
ATA_LOG_DEVSLP_SIZE
];
u8
devslp_timing
[
ATA_LOG_DEVSLP_SIZE
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录