• Home
  • Raw
  • Download

Lines Matching refs:controller

94 	struct aspeed_smc_controller *controller;  member
197 #define SEGMENT_ADDR_REG(controller, cs) \ argument
198 ((controller)->regs + SEGMENT_ADDR_REG0 + (cs) * 4)
258 return BIT(chip->controller->info->we0 + chip->cs); in aspeed_smc_chip_write_bit()
263 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_check_config() local
266 reg = readl(controller->regs + CONFIG_REG); in aspeed_smc_chip_check_config()
271 dev_dbg(controller->dev, "config write is not set ! @%p: 0x%08x\n", in aspeed_smc_chip_check_config()
272 controller->regs + CONFIG_REG, reg); in aspeed_smc_chip_check_config()
274 writel(reg, controller->regs + CONFIG_REG); in aspeed_smc_chip_check_config()
312 mutex_lock(&chip->controller->mutex); in aspeed_smc_prep()
320 mutex_unlock(&chip->controller->mutex); in aspeed_smc_unprep()
402 static int aspeed_smc_unregister(struct aspeed_smc_controller *controller) in aspeed_smc_unregister() argument
407 for (n = 0; n < controller->info->nce; n++) { in aspeed_smc_unregister()
408 chip = controller->chips[n]; in aspeed_smc_unregister()
440 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_base() local
444 if (controller->info->nce > 1) { in aspeed_smc_chip_base()
445 reg = readl(SEGMENT_ADDR_REG(controller, chip->cs)); in aspeed_smc_chip_base()
453 return controller->ahb_base + offset; in aspeed_smc_chip_base()
456 static u32 aspeed_smc_ahb_base_phy(struct aspeed_smc_controller *controller) in aspeed_smc_ahb_base_phy() argument
458 u32 seg0_val = readl(SEGMENT_ADDR_REG(controller, 0)); in aspeed_smc_ahb_base_phy()
466 struct aspeed_smc_controller *controller = chip->controller; in chip_set_segment() local
470 ahb_base_phy = aspeed_smc_ahb_base_phy(controller); in chip_set_segment()
472 seg_reg = SEGMENT_ADDR_REG(controller, cs); in chip_set_segment()
487 if (start + size > ahb_base_phy + controller->ahb_window_size) { in chip_set_segment()
488 size = ahb_base_phy + controller->ahb_window_size - start; in chip_set_segment()
526 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_set_segment() local
534 if (size > controller->info->maxsize) in aspeed_smc_chip_set_segment()
535 size = controller->info->maxsize; in aspeed_smc_chip_set_segment()
542 if (controller->info == &spi_2400_info) in aspeed_smc_chip_set_segment()
551 if (chip->cs == 0 && controller->info == &spi_2500_info && in aspeed_smc_chip_set_segment()
559 ahb_base_phy = aspeed_smc_ahb_base_phy(controller); in aspeed_smc_chip_set_segment()
567 u32 prev = readl(SEGMENT_ADDR_REG(controller, chip->cs - 1)); in aspeed_smc_chip_set_segment()
577 chip->ahb_base = controller->ahb_base + (start - ahb_base_phy); in aspeed_smc_chip_set_segment()
584 if (chip->cs < controller->info->nce - 1) in aspeed_smc_chip_set_segment()
598 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_enable_write() local
601 reg = readl(controller->regs + CONFIG_REG); in aspeed_smc_chip_enable_write()
604 writel(reg, controller->regs + CONFIG_REG); in aspeed_smc_chip_enable_write()
609 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_set_type() local
614 reg = readl(controller->regs + CONFIG_REG); in aspeed_smc_chip_set_type()
617 writel(reg, controller->regs + CONFIG_REG); in aspeed_smc_chip_set_type()
627 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_set_4b() local
630 reg = readl(controller->regs + CE_CONTROL_REG); in aspeed_smc_chip_set_4b()
632 writel(reg, controller->regs + CE_CONTROL_REG); in aspeed_smc_chip_set_4b()
649 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_setup_init() local
650 const struct aspeed_smc_info *info = controller->info; in aspeed_smc_chip_setup_init()
679 dev_dbg(controller->dev, "control register: %08x\n", reg); in aspeed_smc_chip_setup_init()
683 dev_dbg(controller->dev, in aspeed_smc_chip_setup_init()
701 dev_dbg(controller->dev, "default control register: %08x\n", in aspeed_smc_chip_setup_init()
708 struct aspeed_smc_controller *controller = chip->controller; in aspeed_smc_chip_setup_finish() local
709 const struct aspeed_smc_info *info = controller->info; in aspeed_smc_chip_setup_finish()
725 dev_dbg(controller->dev, "write control register: %08x\n", in aspeed_smc_chip_setup_finish()
745 dev_dbg(controller->dev, "base control register: %08x\n", in aspeed_smc_chip_setup_finish()
759 static int aspeed_smc_setup_flash(struct aspeed_smc_controller *controller, in aspeed_smc_setup_flash() argument
767 const struct aspeed_smc_info *info = controller->info; in aspeed_smc_setup_flash()
768 struct device *dev = controller->dev; in aspeed_smc_setup_flash()
795 if (controller->chips[cs]) { in aspeed_smc_setup_flash()
797 cs, dev_name(controller->chips[cs]->nor.dev)); in aspeed_smc_setup_flash()
802 chip = devm_kzalloc(controller->dev, sizeof(*chip), GFP_KERNEL); in aspeed_smc_setup_flash()
808 chip->controller = controller; in aspeed_smc_setup_flash()
809 chip->ctl = controller->regs + info->ctl0 + cs * 4; in aspeed_smc_setup_flash()
841 controller->chips[cs] = chip; in aspeed_smc_setup_flash()
846 aspeed_smc_unregister(controller); in aspeed_smc_setup_flash()
856 struct aspeed_smc_controller *controller; in aspeed_smc_probe() local
867 controller = devm_kzalloc(&pdev->dev, in aspeed_smc_probe()
868 struct_size(controller, chips, info->nce), in aspeed_smc_probe()
870 if (!controller) in aspeed_smc_probe()
872 controller->info = info; in aspeed_smc_probe()
873 controller->dev = dev; in aspeed_smc_probe()
875 mutex_init(&controller->mutex); in aspeed_smc_probe()
876 platform_set_drvdata(pdev, controller); in aspeed_smc_probe()
879 controller->regs = devm_ioremap_resource(dev, res); in aspeed_smc_probe()
880 if (IS_ERR(controller->regs)) in aspeed_smc_probe()
881 return PTR_ERR(controller->regs); in aspeed_smc_probe()
884 controller->ahb_base = devm_ioremap_resource(dev, res); in aspeed_smc_probe()
885 if (IS_ERR(controller->ahb_base)) in aspeed_smc_probe()
886 return PTR_ERR(controller->ahb_base); in aspeed_smc_probe()
888 controller->ahb_window_size = resource_size(res); in aspeed_smc_probe()
890 ret = aspeed_smc_setup_flash(controller, np, res); in aspeed_smc_probe()