cregit-Linux how code gets into the kernel

Release 4.14 arch/powerpc/platforms/embedded6xx/linkstation.c

/*
 * Board setup routines for the Buffalo Linkstation / Kurobox Platform.
 *
 * Copyright (C) 2006 G. Liakhovetski (g.liakhovetski@gmx.de)
 *
 * Based on sandpoint.c by Mark A. Greer
 *
 * This file is licensed under the terms of the GNU General Public License
 * version 2.  This program is licensed "as is" without any warranty of
 * any kind, whether express or implied.
 */

#include <linux/kernel.h>
#include <linux/initrd.h>
#include <linux/of_platform.h>

#include <asm/time.h>
#include <asm/prom.h>
#include <asm/mpic.h>
#include <asm/pci-bridge.h>

#include "mpc10x.h"


static const struct of_device_id of_bus_ids[] __initconst = {
	{ .type = "soc", },
	{ .compatible = "simple-bus", },
	{},
};


static int __init declare_of_platform_devices(void) { of_platform_bus_probe(NULL, of_bus_ids, NULL); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski21100.00%1100.00%
Total21100.00%1100.00%

machine_device_initcall(linkstation, declare_of_platform_devices);
static int __init linkstation_add_bridge(struct device_node *dev) { #ifdef CONFIG_PCI int len; struct pci_controller *hose; const int *bus_range; printk("Adding PCI host bridge %pOF\n", dev); bus_range = of_get_property(dev, "bus-range", &len); if (bus_range == NULL || len < 2 * sizeof(int)) printk(KERN_WARNING "Can't get bus-range for %pOF, assume" " bus 0\n", dev); hose = pcibios_alloc_controller(dev); if (hose == NULL) return -ENOMEM; hose->first_busno = bus_range ? bus_range[0] : 0; hose->last_busno = bus_range ? bus_range[1] : 0xff; setup_indirect_pci(hose, 0xfec00000, 0xfee00000, 0); /* Interpret the "ranges" property */ /* This also maps the I/O region and sets isa_io/mem_base */ pci_process_bridge_OF_ranges(hose, dev, 1); #endif return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski12689.36%114.29%
Arnd Bergmann64.26%228.57%
Kumar Gala53.55%228.57%
Stephen Rothwell21.42%114.29%
Rob Herring21.42%114.29%
Total141100.00%7100.00%


static void __init linkstation_setup_arch(void) { struct device_node *np; /* Lookup PCI host bridges */ for_each_compatible_node(np, "pci", "mpc10x-pci") linkstation_add_bridge(np); printk(KERN_INFO "BUFFALO Network Attached Storage Series\n"); printk(KERN_INFO "(C) 2002-2005 BUFFALO INC.\n"); }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski3587.50%133.33%
Kumar Gala410.00%133.33%
Arnd Bergmann12.50%133.33%
Total40100.00%3100.00%

/* * Interrupt setup and service. Interrupts on the linkstation come * from the four PCI slots plus onboard 8241 devices: I2C, DUART. */
static void __init linkstation_init_IRQ(void) { struct mpic *mpic; mpic = mpic_alloc(NULL, 0, 0, 4, 0, " EPIC "); BUG_ON(mpic == NULL); /* PCI IRQs */ mpic_assign_isu(mpic, 0, mpic->paddr + 0x10200); /* I2C */ mpic_assign_isu(mpic, 1, mpic->paddr + 0x11000); /* ttyS0, ttyS1 */ mpic_assign_isu(mpic, 2, mpic->paddr + 0x11100); mpic_init(mpic); }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski7588.24%120.00%
Kyle Moffett1011.76%480.00%
Total85100.00%5100.00%

extern void avr_uart_configure(void); extern void avr_uart_send(const char);
static void __noreturn linkstation_restart(char *cmd) { local_irq_disable(); /* Reset system via AVR */ avr_uart_configure(); /* Send reboot command */ avr_uart_send('C'); for(;;) /* Spin until reset happens */ avr_uart_send('G'); /* "kick" */ }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski3597.22%150.00%
Daniel Axtens12.78%150.00%
Total36100.00%2100.00%


static void __noreturn linkstation_power_off(void) { local_irq_disable(); /* Power down system via AVR */ avr_uart_configure(); /* send shutdown command */ avr_uart_send('E'); for(;;) /* Spin until power-off happens */ avr_uart_send('G'); /* "kick" */ /* NOTREACHED */ }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski3497.14%150.00%
Daniel Axtens12.86%150.00%
Total35100.00%2100.00%


static void __noreturn linkstation_halt(void) { linkstation_power_off(); /* NOTREACHED */ }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski1292.31%150.00%
Daniel Axtens17.69%150.00%
Total13100.00%2100.00%


static void linkstation_show_cpuinfo(struct seq_file *m) { seq_printf(m, "vendor\t\t: Buffalo Technology\n"); seq_printf(m, "machine\t\t: Linkstation I/Kurobox(HG)\n"); }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski25100.00%1100.00%
Total25100.00%1100.00%


static int __init linkstation_probe(void) { if (!of_machine_is_compatible("linkstation")) return 0; pm_power_off = linkstation_power_off; return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski2281.48%133.33%
Alexander Graf414.81%133.33%
Benjamin Herrenschmidt13.70%133.33%
Total27100.00%3100.00%

define_machine(linkstation) { .name = "Buffalo Linkstation", .probe = linkstation_probe, .setup_arch = linkstation_setup_arch, .init_IRQ = linkstation_init_IRQ, .show_cpuinfo = linkstation_show_cpuinfo, .get_irq = mpic_get_irq, .restart = linkstation_restart, .halt = linkstation_halt, .calibrate_decr = generic_calibrate_decr, };

Overall Contributors

PersonTokensPropCommitsCommitProp
Guennadi Liakhovetski50391.62%210.53%
Kumar Gala112.00%421.05%
Kyle Moffett101.82%421.05%
Arnd Bergmann71.28%210.53%
Uwe Kleine-König50.91%15.26%
Alexander Graf40.73%15.26%
Daniel Axtens30.55%15.26%
Stephen Rothwell20.36%15.26%
Rob Herring20.36%15.26%
Gabriel Craciunescu10.18%15.26%
Benjamin Herrenschmidt10.18%15.26%
Total549100.00%19100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.