rem: { BLKDEV_DMA_BOUNDARY, B_UINT32_TYPE, { ui32: dma_boundary }},
add: { B_BLOCK_DEVICE_DMA_BOUNDARY, B_UINT32_TYPE, { ui32: dma_boundary }},
context: ide_adapter_publish_controller(device_node_handle parent, uint16 bus_master_base,	io_resource_handle *resources, const char *controller_driver,	const char *controller_driver_type, const char *controller_name, bool can_dma,	bool can_cq, uint32 dma_alignment, uint32 dma_boundary, uint32 max_sg_block_size,	device_node_handle *node){	device_attr attrs[] = {		// info about ourself and our consumer		{ B_DRIVER_MODULE, B_STRING_TYPE, { string: controller_driver }},		// properties of this controller for ide bus manager		// there are always max. 2 devices 		// (unless this is a Compact Flash Card with a built-in IDE controller,		//  which has exactly 1 device)		{ IDE_CONTROLLER_MAX_DEVICES_ITEM, B_UINT8_TYPE, { ui8: 2 }},		// of course we can DMA		{ IDE_CONTROLLER_CAN_DMA_ITEM, B_UINT8_TYPE, { ui8: can_dma }},		// command queuing always works (unless controller is buggy)		{ IDE_CONTROLLER_CAN_CQ_ITEM, B_UINT8_TYPE, { ui8: can_cq }},		// choose any name here		{ IDE_CONTROLLER_CONTROLLER_NAME_ITEM, B_STRING_TYPE, { string: controller_name }},		// DMA properties		// data must be word-aligned; 		// warning: some controllers are more picky!		{ BLKDEV_DMA_ALIGNMENT, B_UINT32_TYPE, { ui32: dma_alignment /*1*/}},		// one S/G block must not cross 64K boundary		{ BLKDEV_DMA_BOUNDARY, B_UINT32_TYPE, { ui32: dma_boundary/*0xffff*/ }},		// max size of S/G block is 16 bits with zero being 64K		{ BLKDEV_MAX_SG_BLOCK_SIZE, B_UINT32_TYPE, { ui32: max_sg_block_size/*0x10000*/ }},		// see definition of MAX_SG_COUNT		{ BLKDEV_MAX_SG_BLOCKS, B_UINT32_TYPE, { ui32: IDE_ADAPTER_MAX_SG_COUNT }},		// private data to find controller		{ IDE_ADAPTER_BUS_MASTER_BASE, B_UINT16_TYPE, { ui16: bus_master_base }},		{ NULL }	};	SHOW_FLOW0( 2, "" );	return pnp->register_device(parent, attrs, resources, node);}