Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
cd6c4cf2
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cd6c4cf2
编写于
12月 16, 2011
作者:
A
Anthony Liguori
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ssi: convert to QEMU Object Model
Signed-off-by:
N
Anthony Liguori
<
aliguori@us.ibm.com
>
上级
ba7c0520
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
150 addition
and
70 deletion
+150
-70
hw/ads7846.c
hw/ads7846.c
+12
-5
hw/max111x.c
hw/max111x.c
+24
-10
hw/spitz.c
hw/spitz.c
+27
-12
hw/ssd0323.c
hw/ssd0323.c
+12
-5
hw/ssi-sd.c
hw/ssi-sd.c
+12
-5
hw/ssi.c
hw/ssi.c
+12
-11
hw/ssi.h
hw/ssi.h
+13
-5
hw/stellaris.c
hw/stellaris.c
+12
-5
hw/tosa.c
hw/tosa.c
+13
-6
hw/z2.c
hw/z2.c
+13
-6
未找到文件。
hw/ads7846.c
浏览文件 @
cd6c4cf2
...
...
@@ -153,11 +153,18 @@ static int ads7846_init(SSISlave *dev)
return
0
;
}
static
SSISlaveInfo
ads7846_info
=
{
.
qdev
.
name
=
"ads7846"
,
.
qdev
.
size
=
sizeof
(
ADS7846State
),
.
init
=
ads7846_init
,
.
transfer
=
ads7846_transfer
static
void
ads7846_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
ads7846_init
;
k
->
transfer
=
ads7846_transfer
;
}
static
DeviceInfo
ads7846_info
=
{
.
name
=
"ads7846"
,
.
size
=
sizeof
(
ADS7846State
),
.
class_init
=
ads7846_class_init
,
};
static
void
ads7846_register_devices
(
void
)
...
...
hw/max111x.c
浏览文件 @
cd6c4cf2
...
...
@@ -153,18 +153,32 @@ void max111x_set_input(DeviceState *dev, int line, uint8_t value)
s
->
input
[
line
]
=
value
;
}
static
SSISlaveInfo
max1110_info
=
{
.
qdev
.
name
=
"max1110"
,
.
qdev
.
size
=
sizeof
(
MAX111xState
),
.
init
=
max1110_init
,
.
transfer
=
max111x_transfer
static
void
max1110_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
max1110_init
;
k
->
transfer
=
max111x_transfer
;
}
static
DeviceInfo
max1110_info
=
{
.
name
=
"max1110"
,
.
size
=
sizeof
(
MAX111xState
),
.
class_init
=
max1110_class_init
,
};
static
SSISlaveInfo
max1111_info
=
{
.
qdev
.
name
=
"max1111"
,
.
qdev
.
size
=
sizeof
(
MAX111xState
),
.
init
=
max1111_init
,
.
transfer
=
max111x_transfer
static
void
max1111_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
max1111_init
;
k
->
transfer
=
max111x_transfer
;
}
static
DeviceInfo
max1111_info
=
{
.
name
=
"max1111"
,
.
size
=
sizeof
(
MAX111xState
),
.
class_init
=
max1111_class_init
,
};
static
void
max111x_register_devices
(
void
)
...
...
hw/spitz.c
浏览文件 @
cd6c4cf2
...
...
@@ -1070,12 +1070,20 @@ static const VMStateDescription vmstate_corgi_ssp_regs = {
}
};
static
SSISlaveInfo
corgi_ssp_info
=
{
.
qdev
.
name
=
"corgi-ssp"
,
.
qdev
.
size
=
sizeof
(
CorgiSSPState
),
.
qdev
.
vmsd
=
&
vmstate_corgi_ssp_regs
,
.
init
=
corgi_ssp_init
,
.
transfer
=
corgi_ssp_transfer
static
void
corgi_ssp_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
corgi_ssp_init
;
k
->
transfer
=
corgi_ssp_transfer
;
}
static
DeviceInfo
corgi_ssp_info
=
{
.
name
=
"corgi-ssp"
,
.
size
=
sizeof
(
CorgiSSPState
),
.
vmsd
=
&
vmstate_corgi_ssp_regs
,
.
class_init
=
corgi_ssp_class_init
,
};
static
const
VMStateDescription
vmstate_spitz_lcdtg_regs
=
{
...
...
@@ -1090,12 +1098,19 @@ static const VMStateDescription vmstate_spitz_lcdtg_regs = {
}
};
static
SSISlaveInfo
spitz_lcdtg_info
=
{
.
qdev
.
name
=
"spitz-lcdtg"
,
.
qdev
.
size
=
sizeof
(
SpitzLCDTG
),
.
qdev
.
vmsd
=
&
vmstate_spitz_lcdtg_regs
,
.
init
=
spitz_lcdtg_init
,
.
transfer
=
spitz_lcdtg_transfer
static
void
spitz_lcdtg_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
spitz_lcdtg_init
;
k
->
transfer
=
spitz_lcdtg_transfer
;
}
static
DeviceInfo
spitz_lcdtg_info
=
{
.
name
=
"spitz-lcdtg"
,
.
size
=
sizeof
(
SpitzLCDTG
),
.
vmsd
=
&
vmstate_spitz_lcdtg_regs
,
.
class_init
=
spitz_lcdtg_class_init
,
};
static
void
spitz_register_devices
(
void
)
...
...
hw/ssd0323.c
浏览文件 @
cd6c4cf2
...
...
@@ -340,11 +340,18 @@ static int ssd0323_init(SSISlave *dev)
return
0
;
}
static
SSISlaveInfo
ssd0323_info
=
{
.
qdev
.
name
=
"ssd0323"
,
.
qdev
.
size
=
sizeof
(
ssd0323_state
),
.
init
=
ssd0323_init
,
.
transfer
=
ssd0323_transfer
static
void
ssd0323_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
ssd0323_init
;
k
->
transfer
=
ssd0323_transfer
;
}
static
DeviceInfo
ssd0323_info
=
{
.
name
=
"ssd0323"
,
.
size
=
sizeof
(
ssd0323_state
),
.
class_init
=
ssd0323_class_init
,
};
static
void
ssd03232_register_devices
(
void
)
...
...
hw/ssi-sd.c
浏览文件 @
cd6c4cf2
...
...
@@ -244,11 +244,18 @@ static int ssi_sd_init(SSISlave *dev)
return
0
;
}
static
SSISlaveInfo
ssi_sd_info
=
{
.
qdev
.
name
=
"ssi-sd"
,
.
qdev
.
size
=
sizeof
(
ssi_sd_state
),
.
init
=
ssi_sd_init
,
.
transfer
=
ssi_sd_transfer
static
void
ssi_sd_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
ssi_sd_init
;
k
->
transfer
=
ssi_sd_transfer
;
}
static
DeviceInfo
ssi_sd_info
=
{
.
name
=
"ssi-sd"
,
.
size
=
sizeof
(
ssi_sd_state
),
.
class_init
=
ssi_sd_class_init
,
};
static
void
ssi_sd_register_devices
(
void
)
...
...
hw/ssi.c
浏览文件 @
cd6c4cf2
...
...
@@ -23,8 +23,8 @@ static struct BusInfo ssi_bus_info = {
static
int
ssi_slave_init
(
DeviceState
*
dev
,
DeviceInfo
*
base_info
)
{
SSISlave
Info
*
info
=
container_of
(
base_info
,
SSISlaveInfo
,
q
dev
);
SSISlave
*
s
=
SSI_SLAVE_FROM_QDEV
(
dev
);
SSISlave
*
s
=
SSI_SLAVE
(
dev
);
SSISlave
Class
*
ssc
=
SSI_SLAVE_GET_CLASS
(
s
);
SSIBus
*
bus
;
bus
=
FROM_QBUS
(
SSIBus
,
qdev_get_parent_bus
(
dev
));
...
...
@@ -33,16 +33,15 @@ static int ssi_slave_init(DeviceState *dev, DeviceInfo *base_info)
hw_error
(
"Too many devices on SSI bus"
);
}
s
->
info
=
info
;
return
info
->
init
(
s
);
return
ssc
->
init
(
s
);
}
void
ssi_register_slave
(
SSISlav
eInfo
*
info
)
void
ssi_register_slave
(
Devic
eInfo
*
info
)
{
assert
(
info
->
qdev
.
size
>=
sizeof
(
SSISlave
));
info
->
qdev
.
init
=
ssi_slave_init
;
info
->
qdev
.
bus_info
=
&
ssi_bus_info
;
qdev_register
(
&
info
->
qdev
);
assert
(
info
->
size
>=
sizeof
(
SSISlave
));
info
->
init
=
ssi_slave_init
;
info
->
bus_info
=
&
ssi_bus_info
;
qdev_register
(
info
);
}
DeviceState
*
ssi_create_slave
(
SSIBus
*
bus
,
const
char
*
name
)
...
...
@@ -64,10 +63,12 @@ uint32_t ssi_transfer(SSIBus *bus, uint32_t val)
{
DeviceState
*
dev
;
SSISlave
*
slave
;
SSISlaveClass
*
ssc
;
dev
=
QTAILQ_FIRST
(
&
bus
->
qbus
.
children
);
if
(
!
dev
)
{
return
0
;
}
slave
=
SSI_SLAVE_FROM_QDEV
(
dev
);
return
slave
->
info
->
transfer
(
slave
,
val
);
slave
=
SSI_SLAVE
(
dev
);
ssc
=
SSI_SLAVE_GET_CLASS
(
slave
);
return
ssc
->
transfer
(
slave
,
val
);
}
hw/ssi.h
浏览文件 @
cd6c4cf2
...
...
@@ -15,22 +15,30 @@
typedef
struct
SSISlave
SSISlave
;
#define TYPE_SSI_SLAVE "ssi-slave"
#define SSI_SLAVE(obj) \
OBJECT_CHECK(SSISlave, (obj), TYPE_SSI_SLAVE)
#define SSI_SLAVE_CLASS(klass) \
OBJECT_CLASS_CHECK(SSISlaveClass, (klass), TYPE_SSI_SLAVE)
#define SSI_SLAVE_GET_CLASS(obj) \
OBJECT_GET_CLASS(SSISlaveClass, (obj), TYPE_SSI_SLAVE)
/* Slave devices. */
typedef
struct
{
DeviceInfo
qdev
;
typedef
struct
SSISlaveClass
{
DeviceClass
parent_class
;
int
(
*
init
)(
SSISlave
*
dev
);
uint32_t
(
*
transfer
)(
SSISlave
*
dev
,
uint32_t
val
);
}
SSISlave
Info
;
}
SSISlave
Class
;
struct
SSISlave
{
DeviceState
qdev
;
SSISlaveInfo
*
info
;
};
#define SSI_SLAVE_FROM_QDEV(dev) DO_UPCAST(SSISlave, qdev, dev)
#define FROM_SSI_SLAVE(type, dev) DO_UPCAST(type, ssidev, dev)
void
ssi_register_slave
(
SSISlav
eInfo
*
info
);
void
ssi_register_slave
(
Devic
eInfo
*
info
);
DeviceState
*
ssi_create_slave
(
SSIBus
*
bus
,
const
char
*
name
);
...
...
hw/stellaris.c
浏览文件 @
cd6c4cf2
...
...
@@ -1394,11 +1394,18 @@ static void stellaris_machine_init(void)
machine_init
(
stellaris_machine_init
);
static
SSISlaveInfo
stellaris_ssi_bus_info
=
{
.
qdev
.
name
=
"evb6965-ssi"
,
.
qdev
.
size
=
sizeof
(
stellaris_ssi_bus_state
),
.
init
=
stellaris_ssi_bus_init
,
.
transfer
=
stellaris_ssi_bus_transfer
static
void
stellaris_ssi_bus_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
stellaris_ssi_bus_init
;
k
->
transfer
=
stellaris_ssi_bus_transfer
;
}
static
DeviceInfo
stellaris_ssi_bus_info
=
{
.
name
=
"evb6965-ssi"
,
.
size
=
sizeof
(
stellaris_ssi_bus_state
),
.
class_init
=
stellaris_ssi_bus_class_init
,
};
static
void
stellaris_register_devices
(
void
)
...
...
hw/tosa.c
浏览文件 @
cd6c4cf2
...
...
@@ -266,13 +266,20 @@ static I2CSlaveInfo tosa_dac_info = {
.
event
=
tosa_dac_event
,
.
recv
=
tosa_dac_recv
,
.
send
=
tosa_dac_send
};
};
static
void
tosa_ssp_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
tosa_ssp_init
;
k
->
transfer
=
tosa_ssp_tansfer
;
}
static
SSISlaveInfo
tosa_ssp_info
=
{
.
qdev
.
name
=
"tosa-ssp"
,
.
qdev
.
size
=
sizeof
(
SSISlave
),
.
init
=
tosa_ssp_init
,
.
transfer
=
tosa_ssp_tansfer
static
DeviceInfo
tosa_ssp_info
=
{
.
name
=
"tosa-ssp"
,
.
size
=
sizeof
(
SSISlave
),
.
class_init
=
tosa_ssp_class_init
,
};
static
void
tosa_register_devices
(
void
)
...
...
hw/z2.c
浏览文件 @
cd6c4cf2
...
...
@@ -174,12 +174,19 @@ static VMStateDescription vmstate_zipit_lcd_state = {
}
};
static
SSISlaveInfo
zipit_lcd_info
=
{
.
qdev
.
name
=
"zipit-lcd"
,
.
qdev
.
size
=
sizeof
(
ZipitLCD
),
.
qdev
.
vmsd
=
&
vmstate_zipit_lcd_state
,
.
init
=
zipit_lcd_init
,
.
transfer
=
zipit_lcd_transfer
static
void
zipit_lcd_class_init
(
ObjectClass
*
klass
,
void
*
data
)
{
SSISlaveClass
*
k
=
SSI_SLAVE_CLASS
(
klass
);
k
->
init
=
zipit_lcd_init
;
k
->
transfer
=
zipit_lcd_transfer
;
}
static
DeviceInfo
zipit_lcd_info
=
{
.
name
=
"zipit-lcd"
,
.
size
=
sizeof
(
ZipitLCD
),
.
vmsd
=
&
vmstate_zipit_lcd_state
,
.
class_init
=
zipit_lcd_class_init
,
};
typedef
struct
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录