Commit c1ffb6a8 authored by Bruce Losure's avatar Bruce Losure Committed by Tony Luck

[IA64-SGI] Altix patch to tiocx, add subsys_initcall

This patch fixes an ordering issue between the init code for the
tiocx bus driver and tiocx-related device drivers.   Also adds
a new brick to the list of known FPGA bricks.
Signed-off-by: default avatarBruce Losure <blosure@sgi.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 92a582ed
...@@ -204,8 +204,8 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num, ...@@ -204,8 +204,8 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num,
cx_dev->dev.parent = NULL; cx_dev->dev.parent = NULL;
cx_dev->dev.bus = &tiocx_bus_type; cx_dev->dev.bus = &tiocx_bus_type;
cx_dev->dev.release = tiocx_bus_release; cx_dev->dev.release = tiocx_bus_release;
snprintf(cx_dev->dev.bus_id, BUS_ID_SIZE, "%d.0x%x", snprintf(cx_dev->dev.bus_id, BUS_ID_SIZE, "%d",
cx_dev->cx_id.nasid, cx_dev->cx_id.part_num); cx_dev->cx_id.nasid);
device_register(&cx_dev->dev); device_register(&cx_dev->dev);
get_device(&cx_dev->dev); get_device(&cx_dev->dev);
...@@ -236,7 +236,6 @@ int cx_device_unregister(struct cx_dev *cx_dev) ...@@ -236,7 +236,6 @@ int cx_device_unregister(struct cx_dev *cx_dev)
*/ */
static int cx_device_reload(struct cx_dev *cx_dev) static int cx_device_reload(struct cx_dev *cx_dev)
{ {
device_remove_file(&cx_dev->dev, &dev_attr_cxdev_control);
cx_device_unregister(cx_dev); cx_device_unregister(cx_dev);
return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num, return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num,
cx_dev->cx_id.mfg_num, cx_dev->hubdev); cx_dev->cx_id.mfg_num, cx_dev->hubdev);
...@@ -383,6 +382,7 @@ static int is_fpga_brick(int nasid) ...@@ -383,6 +382,7 @@ static int is_fpga_brick(int nasid)
switch (tiocx_btchar_get(nasid)) { switch (tiocx_btchar_get(nasid)) {
case L1_BRICKTYPE_SA: case L1_BRICKTYPE_SA:
case L1_BRICKTYPE_ATHENA: case L1_BRICKTYPE_ATHENA:
case L1_BRICKTYPE_DAYTONA:
return 1; return 1;
} }
return 0; return 0;
...@@ -409,7 +409,7 @@ static int tiocx_reload(struct cx_dev *cx_dev) ...@@ -409,7 +409,7 @@ static int tiocx_reload(struct cx_dev *cx_dev)
uint64_t cx_id; uint64_t cx_id;
cx_id = cx_id =
*(volatile int32_t *)(TIO_SWIN_BASE(nasid, TIOCX_CORELET) + *(volatile uint64_t *)(TIO_SWIN_BASE(nasid, TIOCX_CORELET) +
WIDGET_ID); WIDGET_ID);
part_num = XWIDGET_PART_NUM(cx_id); part_num = XWIDGET_PART_NUM(cx_id);
mfg_num = XWIDGET_MFG_NUM(cx_id); mfg_num = XWIDGET_MFG_NUM(cx_id);
...@@ -458,6 +458,10 @@ static ssize_t store_cxdev_control(struct device *dev, struct device_attribute * ...@@ -458,6 +458,10 @@ static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *
switch (n) { switch (n) {
case 1: case 1:
tio_corelet_reset(cx_dev->cx_id.nasid, TIOCX_CORELET);
tiocx_reload(cx_dev);
break;
case 2:
tiocx_reload(cx_dev); tiocx_reload(cx_dev);
break; break;
case 3: case 3:
...@@ -537,7 +541,7 @@ static void __exit tiocx_exit(void) ...@@ -537,7 +541,7 @@ static void __exit tiocx_exit(void)
bus_unregister(&tiocx_bus_type); bus_unregister(&tiocx_bus_type);
} }
module_init(tiocx_init); subsys_initcall(tiocx_init);
module_exit(tiocx_exit); module_exit(tiocx_exit);
/************************************************************************ /************************************************************************
......
...@@ -33,5 +33,6 @@ ...@@ -33,5 +33,6 @@
#define L1_BRICKTYPE_PA 0x6a /* j */ #define L1_BRICKTYPE_PA 0x6a /* j */
#define L1_BRICKTYPE_IA 0x6b /* k */ #define L1_BRICKTYPE_IA 0x6b /* k */
#define L1_BRICKTYPE_ATHENA 0x2b /* + */ #define L1_BRICKTYPE_ATHENA 0x2b /* + */
#define L1_BRICKTYPE_DAYTONA 0x7a /* z */
#endif /* _ASM_IA64_SN_L1_H */ #endif /* _ASM_IA64_SN_L1_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment